【发布时间】:2013-06-05 13:24:54
【问题描述】:
在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>
我觉得奇怪的是,从 ViewModel 的 friends 集合中删除 friend 对象(模型?)的逻辑是在 friend 对象本身中实现的。这不会在friend 对象和 ViewModel 实例之间产生不良耦合吗?是否有更一致的设计方法允许在 ViewModel 中而不是在 friend 对象中定义 removeFriend 功能?
【问题讨论】:
标签: javascript mvvm knockout.js viewmodel