0
我一直无法使用jquery.AOP调用Backbone函数。它在全局函数和JavaScript模块上运行良好。使用jquery.aop调用Backbone.js函数的范围问题
require(['app', 'jquery' ],
function(App, $) {
App.initialize();
$.aop.before({target: App.appRouter
method: 'helloWorld'},
function() {
alert("before Hello World");
}
});
在我的例子中,app.appRouter绝对是一个活着的实例变量。 这里是应用程序与它的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
}; });
看起来像范围问题,因为以前的建议永远不会达到。 感谢您的任何想法, 吉米
我试过将两个调用都交换到无效。是的,当单击链接导致Backbone路由器的路由并将触发器选项设置为true时,该功能将被调用。这可能是jquery.aop无法调用它的原因。但是,调试时,Firebug中很好地存在App.appRouter.helloWorld函数。 – 2012-03-20 12:38:06
最后一个想法,那么:你的路由器是否有正确定义的路由?你不会在你发布的代码中显示实际的'routes:{...}'。如果没有定义路由,路由器将不会执行任何操作。 ...对不起,如果这是显而易见的,只是关闭我在帖子中看到的 – 2012-03-20 12:44:59
骨干路由器正确地写入路由,事件......但是我发现了一些东西:通过做$ .aop.before({target:App。 appRouter方法:''},function(){alert(“Hello World”之前);}); ,appRouter的所有功能都被正确地称为aop.before块,是否有动态地获取目标和方法?这可能最终导致我的调用者 – 2012-03-20 12:53:04