我有一个带有 observable 和 observableArray 的视图模型。假设单击按钮会填充 JSON 对象并将其映射到视图模型......我相信“应该”填充 observableArray。按钮点击发生。没有错误。如果我在映射发生时通过调试器运行 obserable 对象会被填充,但 obserableArray 不会。这意味着假设基于 observableArray 显示的 HTML 对象不会得到更新。
HTML:
<div data-bind="if: ErrorMessages().length"> <span>Error Messages</span>
<ul data-bind="foreach: ErrorMessages">
<li> <span data-bind="text: Description"></span>
</li>
</ul>
</div>
<button data-bind="click: ShowErrors">Go</button>
var ViewModel = function () {
var me = this;
me.AData = ko.observable();
me.ErrorMessages = ko.observableArray([]);
Javascript:
me.ShowErrors = function () {
var testdata = {
AData: {
Something: 1
},
ErrorMessages: [{
Description: 'Error #1',
Code: '01'
}, {
Description: 'Error #2',
Code: '02'
}]
};
var jsonData = ko.toJSON(testdata);
ko.mapping.fromJS(jsonData, {}, me);
};
};
ko.applyBindings(new ViewModel());
http://jsfiddle.net/Eves/v9SEk/4/
我的真实代码伸出手并从 Web 服务获取数据。我认为上面创建了一个对象并将其转换为 JSON,然后使用 ko.mapping.fromJS 映射它最能代表正在发生的事情。无论如何...
我怀疑我做了一些愚蠢的事情,或者至少,假设了我不应该做的事情。