我有一个视图模型如下:
var PostModel = function(data){
ko.mapping.fromJS(data, {}, this);
};
var vm = (function () {
var post = {};
var posts = ko.observableArray([]);
var getPost = function () {
var tmp = {
title: new Date(),
content: new Date()
};
//post.title(tmp.title());
//post.content(tmp.content());
ko.mapping.fromJS(tmp, mappingOption, post);
};
var getPosts = function () {
posts.removeAll();
for (var i = 0; i < 2; i++) {
posts.push({ title: new Date() });
}
};
var mappingOption = {
create: function (options) {
return new PostModel(options.data);
}
}
return {
post : post,
posts : posts,
getPost : getPost,
getPosts: getPosts
};
})();
ko.applyBindings(vm);
并响应 html 如下:
<button data-bind="click: getPost">get post</button>
<br />
<label data-bind="text: post.title" ></label>
<br />
<button data-bind="click: getPosts">get post list</button>
<ul data-bind="foreach: posts">
<li data-bind="text: title"></li>
</ul>
我希望在执行 getPost 和 getPosts 函数时更新 post 对象和 posts 数组对象,但是 post 对象不会在 html 中更新,而 post 数组对象会在 html 中更新。
JsFiddle 在这里(http://jsfiddle.net/outia24/AVygn/)
我错过了什么吗?