【问题标题】:How do I connect/relate my model to my view?如何将我的模型连接/关联到我的视图?
【发布时间】:2014-06-16 20:28:17
【问题描述】:

我正在将一个应用程序移植到主干上,但我不确定如何将我的模型与我的视图联系起来?

我猜第一个问题是,它是逐个实例的,还是我可以设置一次,这样每个模型实例(某种类型)都连接到每个视图实例(某种类型)。

这是我的第一个猜测/尝试:

/***************************************************************************************************
*/

    var ModelMediaPane = Backbone.Model.extend({
        defaults: {
            visible:          false,
            previous:         null,
            current:          'about'
        }
    });
    var model_media_pane = new ModelMediaPane();
    $A.log(model_media_pane.get('visible'));

    var ViewMediaPane = Backbone.View.extend({
        id: "mi_holder",
        events: {
        }
    });

    var view_media_pane = new ViewMediaPane({model:ModelMediaPane});
    $A.log(view_media_pane.el);

【问题讨论】:

    标签: javascript backbone.js view model


    【解决方案1】:

    你有很多方法可以做到这一点。

    最简单的一种是在实例化视图时,通过模型实例将模型注入到视图中。正如你已经在做的那样。 或者 您可以在视图中创建一个名为“模型”的变量,然后实例化一个新的 型号。

    回答您的问题,

    如果您使用同一个模型实例来实例化 2 个视图(任何类型)。您的两个视图的模型将相同。这意味着如果 viewA 和 viewB 正在监听同一个模型的事件,它们都会对同一个事件做出反应。

    示例:

    var modelA = new ModelA();
    var ViewA = new ViewA({model:modelA});
    var ViewB = new ViewB({model:modelA});
    

    如果您在模型 A 中更改某些内容,两个视图都会做出反应。

    这使得你有可能有两个视图监听同一模型的两个不同实例,这对我来说没有意义,但取决于你的规则。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 2019-12-03
      • 1970-01-01
      • 2013-06-04
      • 2017-04-02
      相关资源
      最近更新 更多