【发布时间】:2015-09-08 14:29:02
【问题描述】:
我在阅读有关 Backbone 的文章时发现的共识似乎是:不要在视图中存储东西,将其存储在模型中,然后让视图监听模型的变化。
如果我们谈论的是我们已经有了明显的模型-视图配对的情况,那就太好了。例如,您有一个 User 模型和一个 UserView 视图。显然,您在视图上设置了一个模型属性,它会监听其模型的变化。
但是,假设我有一个显示内容列表的视图,并且有几个按钮可以在“列表视图”和“网格视图”之间切换。这是我在应用程序和网站中看到的一个非常常见的约定。我想要“列表视图”还是“网格视图”与模型/集合本身并不相关;它似乎对视图本身非常具体。
起初我只是尝试使用与模型完全一样的视图:设置属性、绑定事件'change:propertyName',然后使用someView.set('propertyName') 等进行更新……但这不起作用。
在考虑如何解决这个问题时,我想我记得以前看到过这样的事情:
var MyView = Backbone.View.extend({
...
model: Backbone.Model(),
...
});
因此,与拥有一个 UserModel 不同。我们只是有一些“无类型”模型。或者我想,我实际上可以创建一个新类,可能只是为此而称为MyViewModel...虽然我看不出有这样做的理由。
这使我可以像我想要的那样绑定到更改事件并使用someView.model.set(...) 设置视图数据。
所以我的问题是:这是人们在 Backbone 中为视图状态所做的常见事情吗?或者,还有更好的方法?谢谢。
【问题讨论】:
标签: javascript backbone.js model-view-controller mvvm underscore.js