1

我正在使用带有淘汰赛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”的值是否为真,但 input[type=button] 和 span 都在渲染。我会错过什么?

4

2 回答 2

0

因为您将多个属性组合到ifandifnot中,所以您需要评估它们。试试这个(假设IsFVL,AllowChat并且AllowChatMonitoring都是可观察的 - 它们必须是):

<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 个函数,而不是函数的返回值。

于 2012-12-24T13:25:13.493 回答
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>

如果这没有帮助,请解决您的问题。

于 2012-12-24T13:29:36.770 回答