Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干:未将Id设置为模型_Javascript_Backbone.js - Fatal编程技术网

Javascript 主干:未将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

我已尝试以下方法为我的模型设置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 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()