我正在将我正在运行的Backbone.js应用程序分成模型,视图和路由器的单独文件。
在我的路由器中,我创建了一个模型,执行其.fetch()
和期望到达回调函数。但是,这绝不会发生。
return Backbone.Router.extend({
self : this,
initialize: function(){
require(['models/mymodel'],
function(MyModel) {
var myModel = new MyModel();
myModel.fetch({ success: self.callback, error: self.callback });
console.log(myModel.get('myAttr'));
//prints 'undefined', although can be seen in model.attributes
}
);
},
callback: function(){
console.log('Callback reached!); //is never printed
}
});
模型/ mymodel.js:
define(function (require) {
"use strict";
var $ = require('jquery'),
Backbone = require('backbone');
return Backbone.Model.extend({
url: function(){
return '/apicall';
}
});
});
答案 0 :(得分:0)
代码中的一个主要问题是:
self : this,
self
字段将在对象文字中创建,但不会创建一个对您想要做的事情有意义的值。 (无论如何,你将如何得到这个值?)在initialize
函数的开头。从代码中删除上面的代码行,并在self
开头设置initialize
,这样可以为您提供所需内容:
initialize: function(){
var self = this;
// The rest is identical.