您必须使用:
this.set('id', globalCounter);
代替this.id = globalCounter;
您正在将 id 值添加到 Model 对象,但您想将其添加到Model.attributes对象。这就是 Model.set() 方法在做什么。
model.set("key", value)
将值放入model.attributes.key;
model.get("key")
将返回里面的值model.attributes.key
对于 Backbone 的新手来说,这有点奇怪,但它是一个主要的(并且很容易)获得的点。它的设计目的是使用model.set(...)
将触发更改事件,您可以轻松捕获以更新您的视图。
骨干网和 ES6 更新:
Backbone 属性对象被 ES6 getter 和 setter 过时了。这些函数可以覆盖标准访问。
警告:这是一个伪代码,有一天可能会与 ES6 一起使用!
class MyModel extends Backbone.Model{
get id(){ return this.attributes.id; }
set id(id){ this.attributes.id = id; }
}
这将允许写:
let myModel = new Model();
myModel.id = 13; // will use myModel.id(13)
console.log (myModel.id); // will show myModel.id()
到今天为止,这只是 Backbone 2 的梦想。经过基本搜索,我没有看到任何关于它的到来。