我將我工作的Backbone.js應用程序拆分爲模型,視圖和路由器的單獨文件。Backbone.js listenTo(model,'change',callback)在分割帶有RequireJS的文件後未達到回調
開始我的路由器:
window.App = Backbone.View.extend({
initialize: function() {
require(["routers/my-router"], function (MyRouter) {
var myRouter = new myRouter();
Backbone.history.start();
});
}
});
在我的路由器文件routers/my-router.js
,我正在聽的模型的變化事件:
define(function (require) {
"use strict";
var $ = require('jquery'),
_ = require('underscore'),
Backbone = require('backbone');
return Backbone.Router.extend({
initialize: function() {
var self = this;
require([],
function(){
var model = new Backbone.Model.extend({});
self.listenTo(model, 'change', self.callback);
model.trigger('change');
}
);
},
callback: function() {
console.log('callback reached!');
}
});
});
我收到以下錯誤定義不同的方式回調:
self.callback
:Uncaught TypeError: undefined is not a function
callback
:Uncaught ReferenceError: callback is not defined
this.callback
:Uncaught TypeError: Cannot read property 'onManualDestination' of undefined
這個問題是玉蕊的答案後,編輯。
取決於這塊代碼的目的...應該不會是'返回新Backbone.Router.extend({})'?在你的例子中,我沒有看到你是如何或在哪裏觸發了該模型的變化。 –