Ran*_*lue 6 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 undefined
Run Code Online (Sandbox Code Playgroud)
如何为我的模型设置ID?
Mat*_*att 10
您需要使用该set()功能(http://jsbin.com/agosub/1/);
var globalCounter = 1;
var Model = Backbone.Model.extend({
initialize: function () {
this.set('id', globalCounter);
globalCounter += 1;
}
});
myModel = new Model();
console.log(myModel.get('id')); // prints 1
Run Code Online (Sandbox Code Playgroud)
你必须使用:
this.set('id', globalCounter);
Run Code Online (Sandbox Code Playgroud)
代替 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(...)fire fire change事件,您可以轻松捕获以更新您的视图.
Backbone属性对象由ES6 getter和setter过时.这些功能可以覆盖标准访问.
警告:这是伪代码,可能是ES6使用的一天!
class MyModel extends Backbone.Model{
get id(){ return this.attributes.id; }
set id(id){ this.attributes.id = id; }
}
Run Code Online (Sandbox Code Playgroud)
这将允许写:
let myModel = new Model();
myModel.id = 13; // will use myModel.id(13)
console.log (myModel.id); // will show myModel.id()
Run Code Online (Sandbox Code Playgroud)
截至今天,这只是一个Backbone 2的梦想.经过基本的搜索,我什么都没看到.
| 归档时间: |
|
| 查看次数: |
6474 次 |
| 最近记录: |