私は次のようなビューモデルを持っています:
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 関数が実行されると、投稿オブジェクトと投稿配列オブジェクトが更新されると予想していましたが、投稿オブジェクトは HTML で更新されませんが、投稿配列オブジェクトは HTML で更新されます。
JsFiddle はこちら(http://jsfiddle.net/outia24/AVygn/)
何か見逃しましたか?