骨干模型.get()
和.set()
如果您的值是简单属性,那么这些例程都可以。我已经继承了一个应用程序,但其值也是JSON对象。骨干模型,JSON和HTML表格
即model.get("key")
返回
{start:
{top:5, bottom:6},
end:{...}
}
等设置任何使用.set()
这些值是皮塔饼,因为你必须拔出旧值,让你想要的变化,踢它回。即如果我需要bottom
= 7,则不能仅仅执行.set("start.bottom",7)
。我需要做的是这样的:
var tempValue = model.get("start");
tempValue.bottom = 7;
model.set("start",tempValue)
模型有一个属性,属性,在这里你可以做model.attributes.start.bottom = 7
。现在这大概不会触发任何事件处理程序,因为查看Backbone代码,这在set
中完成。
所以两个问题:
- 如果我不需要改变处理火,有什么不对 与设置属性直接。
- 有没有办法在设置属性后手动触发 更改处理程序?
的骨干更新日志说 - “的型号更改方法已被删除,因为延迟属性的变化是不再可用”但是我不完全知道为什么会。这听起来很有用。
与此相关:我也试图将HTML表单解析到模型中。我一直在试图使用ModelBinder,但它无法处理嵌套的JSON。例如<input type="text" name="start.top">
编辑: 我刚刚意识到你可以用对象做model.set({})
。例如model.set({start :{top:7}});
但它是一个有点笨重