gpt4 book ai didi

javascript - MVVM 中模型的职责

转载 作者:行者123 更新时间:2023-11-30 13:05:11 24 4
gpt4 key购买 nike

这个问题更多地与如何构建代码有关,或者更准确地说,是模型在使用 Knockout 的 MVVM 模式中的职责。我正在将 Knockout 与 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>

我的问题是因为我的模型有一个可观察的属性,只要属性发生变化,它就会更新 View 。但本质上它是一个模型,更新 UI 的责任应该完全由 View 模型承担。

因此,与更新计数相关的代码本质上应该是 getCount,存在于 View 模型中,而模型不适合它。哪些代码应该留在 viewModel 或模型中的区别在哪里。

最佳答案

老实说,我会将您的模型归类为 View 模型。您的模型是您从 Ajax 调用返回的 json 对象,您为每个对象创建一个 View 模型。就我而言,嵌套 View 模型没有问题。

关于javascript - MVVM 中模型的职责,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15948396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com