Javascript Knockout.js:从模型中分离ViewModel逻辑
在主页上的视频教程中,演示者设置了一个简单的示例,其中ViewModel包含一个Javascript Knockout.js:从模型中分离ViewModel逻辑,javascript,mvvm,knockout.js,viewmodel,Javascript,Mvvm,Knockout.js,Viewmodel,在主页上的视频教程中,演示者设置了一个简单的示例,其中ViewModel包含一个observableArray属性,该属性包含自定义对象的实例(在本例中为“朋友”对象): 然后,将使用KO模板渲染此内容: <script id="friendsTemplate" type="text/html"> <li> <input data-bind="value: name" /> <button data-bind="click: remo
observableArray
属性,该属性包含自定义对象的实例(在本例中为“朋友”对象):
然后,将使用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
功能提高一个级别,并使用以下方式绑定到它:
<button data-bind="click: $parent.removeFriend">Remove</button>
我更喜欢这样。谢谢你的回答。
<button data-bind="click: $parent.removeFriend">Remove</button>
friends: ko.observableArray(),
removeFriend: function(friend) {
viewModel.friends.remove(friend);
}