访问viewModel属性

时间:2011-09-07 19:26:22

标签: templates binding viewmodel knockout.js

我有一个模板绑定如下

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

模板中的行有一个状态字段,其值可以是1或2或3.此屏幕上有三个复选框,根据用户选择的复选框,行应该是可见的。

这就是我所做的:为viewModel添加了三个可观察属性,并将它们绑定到三个复选框。我可以按如下方式显示这些值:

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

问题:我无法在我的模板中添加任何if语句,例如像......

{{if viewModel.checkBos1Selected() }} 

...那么最好的方法是什么,或者无论如何我可以完成我上面描述的内容?

1 个答案:

答案 0 :(得分:4)

执行此类操作的常用方法是创建dependentObservable来表示已过滤的行。然后,将模板与此dependentObservable绑定。只要您的某个可观察过滤器发生更改,就会重新评估过滤后的行。

以下是一个示例:http://jsfiddle.net/rniemeyer/BXeCb/

您当然可以进行过滤,但最适合您的应用。我使用针对observableArray的checked绑定来保存我的过滤器,但您可以轻松地使用在视图模型上使用三个可观察属性的方法。