当我只知道骨干中的视图时创建视图的模型?

时间:2013-12-09 10:28:15

标签: backbone.js view model

我可以访问FooView。

我想创建FooView.model实例。

我尝试了fooModel = new FooView.model(),但它不起作用。

1 个答案:

答案 0 :(得分:1)

骨干中的视图没有模型!

FooView可能是一个视图类,基于名称(Javascript中的常见约定是使用大写字母和带小写字母的变量启动类)...所以我假设某处,你有一个:

 var myView = new FooView();

正确?

如果你这样做,你会发现myView.model是未定义的。你可以在创建时看到它:

var myView = new FooView({model: myModel});

然后,myView.model应该等于myModel。

在幕后,视图的模型属性只是对现有模型的反向引用,视图不会自动创建新的模型实例,也不会创建任何实际的模型实例。实际上,您可以在没有模型的情况下拥有视图,也可以在myView.coolName中存储模型的反向引用。将模型存储视图所需的信息在“模型”中完成其工作只是一种约定。

因此,总而言之,您应该做的事情更多的是:

 //FooModel is another class extending from Backbone.Model
 var myModel = new FooModel({fooStuff: "value", otherFooStuff: "something else"...});
 var myView = new FooView({model: myModel});

希望这有帮助!