knockoutjs if和ifnot绑定在模板中使用时不能正常工作

时间:2012-12-24 05:09:58

标签: knockout.js knockout-2.0

我正在使用以下模板与knockout js

<tbody data-bind="foreach: List">
            <tr>
                <td><input type="button" data-bind="if: ($parent.IsFVL || $parent.AllowChat || $root.Me().AllowChatMonitoring), value: ID, click: SelectVisit" /><span data-bind="ifnot: ($parent.IsFVL || $parent.AllowChat || $root.Me().AllowChatMonitoring), text: ID"></span></td>...

并像这样调用/启动模板

<div data-bind="template: { name: 'tplVisitsGrid', data: { Title: 'My Visits', 'List': MVL, 'AllowChat': true, 'AllowPing': false, 'IsFVL': false } }"></div>

我也仔细检查了“$ root.Me()。AllowChatMonitoring”的值是否为真,但输入[type = button]和span都是渲染,有人可以帮助我找不到的东西。

感谢。

2 个答案:

答案 0 :(得分:0)

由于您要将多个属性合并到ififnot中,因此需要对其进行评估。试试这个(假设IsFVLAllowChatAllowChatMonitoring都是可观察的 - 它们必须是):

<td><input type="button" data-bind="if: ($parent.IsFVL() || $parent.AllowChat() || $root.Me().AllowChatMonitoring()), value: ID, click: SelectVisit" /><span data-bind="ifnot: ($parent.IsFVL() || $parent.AllowChat() || $root.Me().AllowChatMonitoring()), text: ID"></span></td>...

之前实际发生的是它比较了3个函数,而不是函数的返回值。

答案 1 :(得分:0)

访问IsFVL,AllowChat等时不应使用$parent。尝试将模板更新为以下内容:

<input type="button" data-bind="if: (IsFVL || AllowChat || $root.Me().AllowChatMonitoring), value: ID, click: SelectVisit" />
<span data-bind="ifnot: (IsFVL || AllowChat || $root.Me().AllowChatMonitoring), text: ID"></span></td>

如果这样做无济于事,请为您的问题创造一个小提琴。