Javascript 主干:未将Id设置为模型
我已尝试以下方法为我的模型设置id:Javascript 主干:未将Id设置为模型,javascript,backbone.js,Javascript,Backbone.js,我已尝试以下方法为我的模型设置id: var globalCounter = 1; var Model = Backbone.Model.extend({ initialize: function () { this.id = globalCounter; globalCounter += 1; } }); myModel = new Model(); console.log(myMode.get('id')); // prints undef
var globalCounter = 1;
var Model = Backbone.Model.extend({
initialize: function () {
this.id = globalCounter;
globalCounter += 1;
}
});
myModel = new Model();
console.log(myMode.get('id')); // prints undefined
如何为我的模型设置id?您需要改用函数()
您必须使用:
this.set('id', globalCounter);
而不是this.id=globalCounter代码>
您正在将id值添加到模型对象,但希望将其添加到Model.attributes对象。这就是Model.set()方法的作用
model.set(“key”,value)
将值放入model.attributes.key代码>
model.get(“key”)
将返回model.attributes.key中的值
对于新手来说,这有点奇怪,但这是一个重要的(而且很容易)要点。它的设计使得使用model.set(…)
将触发更改事件,您可以轻松捕获这些事件以更新视图
主干网和ES6更新:
主干属性对象已被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()
截至今天,这只是一个梦想的主干2。经过基本的搜索,我没有看到任何关于它的消息。很好的解释!谢谢谢谢,我刚刚又加了一些。
let myModel = new Model();
myModel.id = 13; // will use myModel.id(13)
console.log (myModel.id); // will show myModel.id()