【发布时间】:2015-07-16 12:52:41
【问题描述】:
我正在使用 KnockoutJS 绑定到 WINJS 应用程序中的表,当我第一次运行我的应用程序时,它运行良好且绑定正确。 这是 Row.innetHTML =
<tbody id="repeater" data-bind="foreach: labsTableArrayKo"
<tr class="tr">
<td><span data-bind="text: VlabName"></span></td>
<td><span data-bind="text: VMType"></span></td>
<td>
<div data-bind="if: VMType == 'Virtual Machine'">
<span data-bind="text: vmStatus"></span>
</div>
<div data-bind="if: VMType == 'RemoteApp'">
<span data-bind="text: 'Ready'"></span>
</div>
</td>
</tr>
但是当我更改绑定中使用的数组时,一些 HTML 代码被删除(我不知道如何?!)。 Row.InnetHTML 是 =
<tr class="tr">
<td><span data-bind="text:VlabName"></span></td>
<td><span data-bind="text: VMType"></span></td>
<td>
<div data-bind="if: VMType == 'Virtual Machine'"></div>
<div data-bind="if: VMType == 'RemoteApp'"></div>
</td>
</tr>
这是我如何通过 Javascript 绑定到 HTML 代码:
var viewModel = {labsTableArrayKo: labs_Table_Array};
ko.cleanNode(document.getElementById("repeater"));
var q = document.getElementById("repeater").innerHTML;
ko.applyBindings(viewModel, document.getElementById("repeater"));
那么问题出在哪里??
【问题讨论】:
-
VMType的值是多少?如果条件不成立,if绑定不会呈现其内容的 HTML。 -
你是如何在 labsTableArrayKo 中构建项目的?该数组中的对象是 POCO 还是它们是使用敲除 observables 构造的?如果像 VlabName 和 VMType 这样的成员是可观察的,那么你应该检查 'if' 绑定中的表达式。表达式 VMType == 'Virtual Machine' 的计算结果可能为 false,因为 VMType 是一个函数(可观察的) - 在这种情况下,您应该编写该表达式,例如:VMType() == 'Virtual Machine'。也许这会有所帮助。
-
Roy J,我以前不知道 .. 谢谢你。
标签: javascript html knockout.js winjs