0
jquery.AOPを使用してバックボーン関数を呼び出すことができませんでした。グローバル関数と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
}。 });
beforeアドバイスには決して行きませんので、スコープの問題のようです。 ご意見ありがとうございます。 ジミー
私は両方の呼び出しを無駄に交換しようとしました。また、リンクがクリックされて、Backboneルーターのルートにつながって、triggerオプションがtrueに設定されていると、この機能が呼び出されます。これはjquery.aopがそれを呼び出せない理由です。しかし、App.appRouter.helloWorld関数は、デバッグ中にFirebugによくあります。 –
最後のアイデアは、あなたのルータに正しく定義されたルートがありますか?あなたが投稿したコードに実際のルート:{...}を表示しません。経路が定義されていない場合、ルータは何もしません。 ...それが明白であれば申し訳ありませんが、私は投稿で見ているものを外しています –
バックボーンルータは経路、イベントで正しく書かれています...しかし、私は何かを発見しました:$ .aop.before({target:App。 appRouterメソッド: ''}、function(){alert( "before Hello World");}); appRouterのすべての関数が正しく呼び出されます!aop.beforeブロック内でターゲットとメソッドを動的に取得する方法はありますか?それは最終的に私が呼び出し元 –