在Knockout.js主页上的视频教程中,演示者设置了一个简单示例,其中 ViewModel 包含一个observableArray
包含自定义对象(在本例中为“朋友”对象)实例的属性:
function friend(name) {
return {
name: ko.observable(name),
remove: function () {
viewModel.friends.remove(this);
}
};
}
var viewModel = {
friends: ko.observableArray()
}
ko.applyBindings(viewModel);
然后使用 KO 模板进行渲染:
<script id="friendsTemplate" type="text/html">
<li>
<input data-bind="value: name" />
<button data-bind="click: remove">Remove</button>
</li>
</script>
friend
在我看来,从 ViewModel 的friends
集合中删除对象(模型?)的逻辑是在friend
对象本身中实现的,这对我来说似乎很奇怪。friend
这不会在对象和 ViewModel 实例之间产生不希望的耦合吗?是否有更一致的设计方法允许removeFriend
在 ViewModel 中而不是在friend
对象中定义功能?