我无法使用jquery.AOP调用Backbone函数。它适用于全局函数和javascript模块。
require(['app', 'jquery' ],
function(App, $) {
App.initialize();
$.aop.before( {target: App.appRouter
method: 'helloWorld'},
function() {
alert("before Hello World");
}
});
在我的示例中,app.appRouter肯定是一个活动的实例变量。 这是App及其appRouter:
define([
'jquery',
'underscore',
'backbone'
], function($,
_,
Backbone
){
var appRouter = Backbone.Router.extend({
initialize: function() {
//some code
},
helloWorld: function(){
alert("hello world");
}
});
var initialize = function(){
this.appRouter = new appRouter(this);
Backbone.history.start();
};
return {
initialize: initialize,
appRouter : this.appRouter
}; });
似乎是范围问题,因为之前的建议从未到达。 谢谢你的任何想法, 麦
答案 0 :(得分:0)
这可能是时间问题。
$。aop的工作原理是用新函数替换目标函数,并保持对原始目标的引用。当你调用该函数时,它的aop版本被执行,它依次调用原始函数。
鉴于此,请尝试使用App.initialize()
电话交换$.aop...
来电:
$.aop.before({
target: App.appRouter
method: 'helloWorld'},
function() {
alert("before Hello World");
});
App.initialize();
我的另一个想法是,我在代码中看不到任何调用路由器的helloWorld
方法的地方。你确定你真的叫它吗?