在我正在查看的骨干应用程序的一个视图(视图A)中(有多个模型),它在初始化程序中有这一行
this.model.bind('change', this.setText, this);
在另一个视图(视图B)中,它在初始值设定项中有这一行
this.model.bind('change', this.render, this);
然而,在任何一个View中都没有指出它连接到哪个模型。即没有声明'model'
是什么。这是否意味着触发'change'
的任何模型都会在视图A中触发this.setText
,在视图B中触发{同时} this.render
?
答案 0 :(得分:4)
来自fine manual:
构造函数/初始化
new View([options])
[...]有几个特殊选项,如果通过,将直接附加到视图:
model
,collection
,el
,id
,className
,tagName
和attributes
。
所以当你用这个实例化一个视图时:
var v = new SomeView({ model: m });
Backbone会在this.model
内自动将m
设置为v
,这将在调用initialize
之前完成。查找具有bind
个调用的视图的构造函数调用,您应该看到实例化视图时提供的model
。
这是否意味着触发
'change'
的任何模型都会在视图A中触发this.setText
,在视图B中触发{同时}this.render
? / p>
不,每个视图(在本例中)都有自己的模型,在实例化视图时提供,事件将仅来自该模型。