【问题标题】:Using a literal object as a Backbone.Model使用文字对象作为 Backbone.Model
【发布时间】:2015-01-10 16:41:49
【问题描述】:

我需要将文字对象发送到视图。以下代码是否有更好的替代方法:

var model= (new (Backbone.Model)).set({'foo':1,'bar':3})

【问题讨论】:

  • 您正在创建一个模型并为其设置值。我没有看到提到的任何视图,请编辑并添加更多详细信息。

标签: backbone.js view model


【解决方案1】:

只是简单

var model = new Backbone.Model({'foo':1,'bar':3})

【讨论】:

    【解决方案2】:

    是的,如果您只是传入一些与视图数据无关的变量,那么您不应该传入模型。我可以想到另外两种更高效的方法将数据放入您的视图中。

    在实例化时传递数据

    每个视图都会接受传递给视图构造函数的参数,并将它们传递给视图initialize(Backbone 对传入的参数做了更多的事情,但它们都以initialize 结尾)。让我给你看一个简单的例子。

    var MyView = Backbone.View.extend({
      initialize: function(options) {
        // All the parameter you pass into the view construct with will be
        // in the initialize options
    
        // Attach options to the view so you can access your options
        // from all view properties (bound to the view)
        this.options = options || {};
      }
    }
    

    现在让你的对象字面量进入你的视图:

    var aView = new MyView({'foo':1,'bar':3});
    aView.options.foo; // 1
    aView.options.bar; // 3
    

    在实例化后使数据可用

    如果你想在实例化之后合并一个对象,那么只需使用_.extend:

    _.extend(aView, {'foo':1,'bar':3});
    aView.foo; // 1
    aView.bar; // 3
    

    【讨论】:

      猜你喜欢
      • 2013-01-24
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多