我有以下标记:
<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);
无济于事。有什么想法吗?
答案 0 :(得分:1)
尝试使用此
self.arrayChanged = function (array) {
var arr = JSON.parse(array)
self.Items(arr)
};
将json转换为object,然后将对象数组传递给Items