【发布时间】:2014-08-20 21:41:47
【问题描述】:
我有以下标记:
<table>
<tr>
<td style="padding-left: 150px;">
<ul id="items" data-bind='foreach: Items'>
<li>
<span class="title" data-bind="text: $data.Title"></span>
<li>
</td>
</tr>
</table>
还有下面的javascript:
$(function () {
var ViewModel = function () {
var self = this;
self.Items= ko.observableArray();
self.arrayChanged = function (array) {
$.each(array, function (i, obj) {
self.Items.push(obj);
});
};
};
var viewModel = new ViewModel();
ko.applyBindings(viewModel, $("#items")[0]);
viewModel.arrayChanged($.parseJSON('@Html.Raw(Json.Encode(Model.Items))'));
});
以上是我正在尝试做的一个非常简化的版本。在上面
self.Items.push(obj);
不起作用,因为它无法在 Items observableArray 上推送新项目。我也尝试过使用
ko.utils.arrayPushAll(self.Experiences, obj);
无济于事。有什么想法吗?
【问题讨论】:
-
Model.Items的 JSON 是什么样的? -
更具体地说 - 你确定这个
$.parseJSON('@Html.Raw(Json.Encode(Model.Items))')是数组吗? -
在紧急情况下使用 self.Items.valueHasMutated()
-
是的,Ilya,$.parseJSON('@Html.Raw(Json.Encode(Model.Items))') 生成一个数组。
-
约翰,我之前尝试过使用 self.Items.valueHasMutated() 并没有帮助。
标签: jquery knockout.js knockout-2.0