当我只知道主干中的视图时创建视图模型?
Posted
技术标签:
【中文标题】当我只知道主干中的视图时创建视图模型?【英文标题】:Creating a view's model when I only know the view in backbone? 【发布时间】:2013-12-09 10:28:14 【问题描述】:我可以访问 FooView。
我想创建 FooView.model 实例。
我尝试了fooModel = new FooView.model()
,但它不起作用。
【问题讨论】:
【参考方案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);
希望这会有所帮助!
【讨论】:
感谢您的意见。我想将模型的类存储在视图中。并在运行时使用它。 var myModel = new FooView.Model(foostuff: "values");像这样的东西.. 为什么要将Model类存储在View类中?那将是非常不寻常的......话虽如此,你总是可以在课堂上存储任何东西。所以......如果你这样做: FooView.Model = Backbone.Model.extend(...) 然后在 FooView 类中,你会找到一个属性 .Model ,你可以用 new FooView.Model( foostuff:“价值观”)。但是再一次,除了你之外的任何人都会感到非常困惑,因为这是一个存储模型类的奇怪地方。以上是关于当我只知道主干中的视图时创建视图模型?的主要内容,如果未能解决你的问题,请参考以下文章