我正在使用以下模板与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都是渲染,有人可以帮助我找不到的东西。
感谢。
答案 0 :(得分:0)
由于您要将多个属性合并到if
和ifnot
中,因此需要对其进行评估。试试这个(假设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个函数,而不是函数的返回值。
答案 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>
如果这样做无济于事,请为您的问题创造一个小提琴。