松散说,在一个MVVM图案的各种部件是使用Backbone + Stickit时,视图模型对象是否需要扩展Backbone.Model?
Model
:这表示数据由服务器发送和发送回服务器。这不包含与UI的显示相关的状态ViewModel
:这是从一个或多个模型构建的。这包含用于UI操作的状态(是启用还是禁用按钮)。所有用于UI操作的逻辑都存储在这里。这层不依赖任何UI框架(没有jQuery调用)View
:这与UI框架/底层UI控件紧密耦合。一个观点观察一个且仅有一个观点模型。视图模型可以被一个或多个视图观察到。该视图负责与视图模型进行两个绑定。- A
presenter/coordinator
:虽然不是传统实施的一部分,但在缺乏视图模型的情况下,责任过重。这个人帮助协调制作Ajax调用(get/post),监听全局事件聚合器上的事件等。
独立主干没有视图模型和数据绑定的概念。在这种情况下,服务器返回的数据可以建模为Backbone.Model
对象。绑定是手动完成的,并且POJO可以用于视图模型同步。
如果我希望使用Stickit进行数据绑定,则看起来视图模型需要是Backbone.Model
的实例。主要是因为绑定在Backbone.View
和Backbone.View
的范围内工作,因此需要Backbone.Model
对象作为视图的属性。另外,Backbone.Model引发了变化事件,而不是。我认为这将是很难观察一个POJO。再次,这是我通过阅读Stickit文档的理解。如果我错了,请纠正我。
一个Backbone.Model
上有其他方法不从一个视图模型的点是有意义的,就像save
,fetch
等我读了另一个MVVM库,Knockback
。它可以将Backbone.Model
转换为Knockout.js
视图模型。除了传入完整的Backbone.Model
之外,它还可以接受任何具有get/set方法并在属性发生更改时引发更改事件的POJO。
是否有Stickit有一个类似的合同,我可以通过一个POJO获取/设置方法并引发变化事件?建议的用法是什么?