在 Backbone.js 中工作,我想从模型的方法中设置模型属性。这看起来应该很简单,但我无法让它工作。
目前我所拥有的是这个。我试图在调用“performSearch”期间设置“results”属性:
var SearchModel = Backbone.Model.extend({
performSearch: function(str) {
$.get('/' + str, function(results) {
console.log(data);
this.set("results", data);
});
},
});
这给了我以下错误:
Uncaught TypeError: Object #<Object> has no method 'set'
我做错了什么?
最佳答案
问题是 this
没有绑定(bind)到 ajax 回调中的模型对象。
您可以通过执行以下操作来修复它:
var SearchModel = Backbone.Model.extend({
performSearch: function(str) {
//assign to local variable, so that it is accesible in callback's closure
var self = this;
$.get('/' + str, function(results) {
// are you sure it should be data?
console.log(data);
self.set("results", data);
});
},
});
另一种方法是将回调函数显式绑定(bind)到模型:
var SearchModel = Backbone.Model.extend({
performSearch: function(str) {
//assign to local variable, so that it is accesible in callback's closure
$.get('/' + str, (function(results) {
// are you sure it should be data?
console.log(data);
this.set("results", data);
}).bind(this)); //binding here
},
});
关于javascript - Backbone.js:在模型中设置模型属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14222885/