我一直在通过 ko.applyBindings(mww.vm) - ViewModel - 使用 ko.obsevableArray 和 ko 模板来迭代和显示:
mww.vm = (function () {
var
loadWishlists = function () {
mww.vm.wishlists.removeAll();
$.each(mww.sampleData.data.wishlists, function (i, w) {
mww.vm.wishlists.push(new mww.Wishlist()
.WishlistId(w.WishlistId)
.Name(w.Name)
.Ocassion(w.Ocassion)
.Date(w.Date)
);
});
}
addWishlist = function () {
mww.vm.wishlists.push(new mww.Wishlist()
.WishlistId(0)
.Name($('#NameTxt').val())
.Ocassion($('#OccassionTxt').val())
.Date($('DateTxt').val())
);
};
return {
wishlists: ko.observableArray([]),
friends: ko.observableArray([]),
loadWishlists: loadWishlists,
addWishlist: addWishlist
};
})();
模板:
<div id="WishlistTempl" style="display:none;">
<div class="WishlistBox">
<div class="wwBox">
<div class="BoxHeading">
<div class="ButtonPanel">
<span data-bind="text:Name"></span>
</div>
<div class="FriendPicker" data-bind="template: {name:'FriendTmpl', foreach:$parent.friends}"></div>
</div>
</div>
它可以工作,但是当我使用 addWishlist,在愿望清单 ko.observableArray 中推送一个新项目时,愿望清单的属性会显示在模板中,但不会显示在 $parent.friends 中。有任何想法吗?