模型在MVVM中的职责
responsibility of model in MVVM
这个问题更多地与如何使用Knockout构建代码或更精确地说明MVVM模式中模型的职责有关。我使用淘汰赛与Durandal,但问题可能是MVVM模式的通用问题。例如
我有这样的模型:
var Model = function(data){
this.name = data.name;
this.count = ko.observable();
};
Model.prototype.getCount = function(){
var self = this;
setInterval(function(){
//some ajax call to get the count
self.count(data.count);
}, 1000);
};
我的viewModel接受我的模型的集合,如:
var ViewModel = function(){
this.models = ko.observableArray([]);
//ajax call to get the required data
data.Items.forEach(function(item){
var model = new Model(item);
model.getCount();
this.models.push(model);
}
};
现在我的视图
<div data-bind="foreach: models">
<div data-bind="text: name"></div>
<div data-bind="text: count"></div>
</div>
我的问题是因为我的模型有一个可观察属性,每当属性改变它更新视图。但本质上它是一个模型,更新UI的责任应该完全取决于视图模型。
因此,如果与更新计数有关的代码本质上是getCount,则存在于视图模型上,而模型不适合它。什么代码应该留在viewModel或模型中的区别在哪里?老实说,我会把你的模型归类为视图模型。模型是从Ajax调用返回的json对象,并为每个对象创建视图模型。就我而言,嵌套视图模型没有问题。
Knockout并没有真正实现MVVM;它更像VVM。其他库,如Backbone等,使用模型;淘汰赛真的没有。为了在Knockout中使用MVVM,您的"模型"是您的服务器端数据库实体。
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- 为集合分配大量的模型弹药
- 如何使用backbone.js从集合中获取模型名称
- 如何在使用剑道 MVVM 下拉列表时强制选择第一项
- 骨干模型默认值-todos.js示例中不必要的代码
- EmberJS中支持单字母单词模型
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- 将不在模型中的数据返回到mvc控制器
- 如何在视图模型contet更新更新上调用Jquery函数
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 我应该如何检查主干.主干.模型更改时查看
- Ext.js从json构建模型关系的问题
- 在MVVM视图模型中处理应用程序范围的元素
- MVVM 模型中的 Meteor on Rails 集成
- UI JavaScript在MVVM模型中属于什么位置(带有挖空)
- MVVM:视图模型的架构应该像视图还是像模型
- 模型在MVVM中的职责
- 如何将HTML5画布模型与MVVM/MPV数据框架链接起来
- 模型视图控制器-我们是否在使用JavaScriptMVC(MVVM)框架,如Backbone.js、Angular等
- Silverlight 4 MVVM:从视图模型调用Javascript函数