2011-09-07 85 views
1

我有一個模板結合如下訪問視圖模型性能

<tbody id ="mytemplatetbody" 
     data-bind="template: {name: 'myTemplate', foreach: Items}"> 
</tbody> 

該行模板都有一個狀態字段,其值可以是1或2或3。有此屏幕上的三個複選框,並根據什麼複選框(es)用戶選擇,行應該是可見的。

這就是我所做的:爲viewModel添加了三個可觀察的屬性,並將它們綁定到三個複選框。我可以用下列方式顯示這些值:

<span data-bind="text: viewModel.checkBox1Selected()"></span> 

問:我不能把任何if語句在我的例如像這樣的模板......

{{if viewModel.checkBos1Selected() }} 

...所以什麼最好的方式或反正我可以完成我上面描述的?

回答

4

做這種事情的一種常見方法是創建dependentObservable來表示您的過濾行。然後,將您的模板綁定到這個dependentObservable上。只要您的某個可觀察過濾器發生更改,那麼過濾的行將被重新評估。

這裏有一個例子:http://jsfiddle.net/rniemeyer/BXeCb/

你當然可以做過濾然而最適合您的應用程序。我用一個observableArray來檢查綁定來保存我的過濾器,但是你可以很容易地在你的視圖模型上使用三種可觀察的屬性。

+0

謝謝你給我指路。 – unlimitedsprint

+0

過濾工作的基礎上覆選框選擇完美,我有另一個過濾我需要額外做相同的數據。當用戶登錄到這個應用程序時,應該顯示的唯一行是由他創建的行(我們已經通過db中的列創建),我該怎麼做? – unlimitedsprint

+0

這樣的事情如何:http://jsfiddle.net/rniemeyer/Yrxfe/? –