我试过了:
initialize: function() {
if (this.get("id") == "modelOfInterest") {
var func = function() {
//do some stuff with the model
}
_.bind(func, this)
}
}
和
initialize: function() {
if (this.get("id") == "modelOfInterest") {
var func = function() {
//do some stuff with the model
}
this.on("func", func, this);
}
}
然而,在这两种情况下:
myModelInstance.func(); //object has no method func
我不想使用_.bindAll()
。
我编辑了上面的代码,表明我试图将func绑定到只有一个模型。将模型添加到集合时进行初始化:所有模型同时触发初始化,我只想将func绑定到其中一个。
答案 0 :(得分:14)
有什么理由不明白吗?
Model = Backbone.Model.extend({
func: function() {
},
})
答案 1 :(得分:3)
在func
区块中将if
指定为模型的属性。
var Model = Backbone.Model.extend({
initialize:function() {
if (this.get('id') === 1) {
this.func = function() {
// your logic here
};
this.on('func',this.func,this);
}
}
});
答案 2 :(得分:1)
静态方法应该在.extend调用中的第二个字典上声明:
SomeModel = Backbone.Model.extend({
initialize: function(){}
},{
someStaticFunction: function(){
//do something
}
});
答案 3 :(得分:0)
试试这个:
SomeModel = Backbone.Model.extend({
initialize: function(){},
someFunction: function(){
//do something
}
});
而且:
var model = new SomeModel();
model.someFunction();