使用文字对象作为 Backbone.Model

Posted

技术标签:

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

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

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

【问题讨论】:

您正在创建一个模型并为其设置值。我没有看到提到的任何视图,请编辑并添加更多详细信息。 【参考方案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

【讨论】:

以上是关于使用文字对象作为 Backbone.Model的主要内容,如果未能解决你的问题,请参考以下文章

当 JSON 对象作为字符串文字插入时,MySQL JSON 列丢失小数精度

将对象文字用作哈希表是一种好习惯吗?

在 TypeScript 中使用类型变量访问对象文字不起作用

字符串文字不允许作为非类型模板参数

你可以在javascript中使用模板文字创建对象属性名称吗?

对 Python 返回 JSON 作为字符串而不是文字感到困惑