【问题标题】:setting backbone models设置骨干模型
【发布时间】:2011-12-14 02:34:28
【问题描述】:

我在主干视图中有以下场景。我希望这样设置模型。

saveField : function(field, val){
    //field = 'username'; val = 'Boris'
model.set({field : val});
}

该字段是模型中属性的字符串表示形式。

问题是主干正在通过字段名称创建一个新属性。 我可以这样设置

model.attributes[field] = val;

但是,我宁愿使用 set。

有谁知道我该怎么做? 谢谢

编辑:结束了 -

var asObj = new Object;
asObj[field] = val;
model.set(asObj);

【问题讨论】:

  • 我做的和你最后做的一样。
  • 你可以var asObj = {}; - 更短但是是的 - 键是一个字符串。你也可以 model.attribytes[field] = val;model.changed(); 但这更丑(而且 afaik "changed:" 事件不会发生)
  • @Paul 这实际上似乎是内置的

标签: javascript backbone.js


【解决方案1】:

看看主干source 这应该已经可以工作了 - 你的电话只是需要看起来有点不同。

saveField : function(field, val){
    //field = 'username'; val = 'Boris'
    model.set(field, val);
}

您要查找的参数格式是set(key, value, options)。这意味着您一次只能设置一个属性,但看起来这就是您想要做的。替代格式是 set(attr, options),这是您使用的格式,但不适用于字符串键。

无论如何,您都不想直接设置属性,因为主干在内部使用此挂钩来执行诸如引发 'changed' 事件之类的事情。

【讨论】:

  • 谢谢@TheDeeno 我不知道它已经被内置了。
猜你喜欢
  • 2013-10-14
  • 1970-01-01
  • 2014-06-25
  • 2012-05-04
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多