【问题标题】:Accessing viewModel properties访问 viewModel 属性
【发布时间】:2011-09-07 19:26:22
【问题描述】:

我有一个模板绑定如下

<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() }} 

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

【问题讨论】:

    标签: templates binding viewmodel knockout.js


    【解决方案1】:

    执行此类操作的一种常见方法是创建一个dependentObservable 来表示您过滤的行。然后,将你的模板绑定到这个dependentObservable。每当您的可观察过滤器之一发生更改时,都会重新评估过滤后的行。

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

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

    【讨论】:

    • 过滤工作基于复选框选择完美无瑕,我还有另一个过滤我需要对相同的数据进行额外的过滤。当用户登录这个应用程序时,应该显示的唯一行是他创建的行(我们在 db 中创建了列),我该怎么做?
    猜你喜欢
    • 1970-01-01
    • 2016-02-17
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    相关资源
    最近更新 更多