【问题标题】: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(),但它不起作用。

【问题讨论】:

    标签: backbone.js view 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:“价值观”})。但是再一次,除了你之外的任何人都会感到非常困惑,因为这是一个存储模型类的奇怪地方。
    猜你喜欢
    • 2012-02-23
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多