2016-04-08 14 views
0

私はAngularアプリを持っていて、そのui.routerモジュールはonEnterメソッドを持っています。状態メニュー項目をクリックして状態を変更すると関数を呼びたいしかし今、私のアプリは正しく動作していません。例えば。私はapp.com/whatに行き、コンソールがアプリケーションをロードすると5行すべてを出力し、その後はメニューをクリックしても何も印刷されません。私はこれを読んだhere角度onEnter ui.routerメソッドが動作しない方法

状態がアクティブと非アクティブになったときに呼び出されるオプションの 'onEnter'と 'onExit'コールバックもあります。ページがロードされ

私のコンソール:

[debug] changeMenu item_id:1495 
[debug] changeMenu item_id:1342 
[debug] changeMenu item_id:1344 
[debug] changeMenu item_id:1346 
[debug] changeMenu item_id:1346 

私の目標は、changeMenuメニュー項目をクリックするだけで機能やinitステップ上を呼び出すです。

  var changeMenu = function(itemID){ 
       console.log("[debug] changeMenu item_id:"+itemID); 
       // for menu css 
       $("#nav_menu li.active").removeClass("active"); 
       $("#nav_menu li#menu-item-"+itemID).addClass('active'); 
       $('#nav_menu').spasticNav(); 
      } 
      // 
      // Now set up the states 
      $stateProvider 
      .state('index', { 
       url: "/", 
       templateUrl: "main.html", 
       onEnter: changeMenu(1495) 
      }) 
      .state('what', { 
       url: "/what", 
       templateUrl: "what.html", 
       onEnter: changeMenu(1342) 
      }) 
      .state('where', { 
       url: "/where", 
       templateUrl: "where.html", 
       onEnter: changeMenu(1344) 

      }) 
      .state('cost_rent', { 
       url: "/cost_rent", 
       templateUrl: "cost_rent.html", 
       onEnter: changeMenu(1346) 

      }) 
      .state('cost_sell', { 
       url: "/cost_sell", 
       templateUrl: "cost_sell.html", 
       onEnter: changeMenu(1346) 
      }) 
     }); 

答えて

2

onEnterを使用すると、クロージャ(コールバック関数)が必要です。 onEnter: changeMenu(1495)はコールバック関数ではないので、関数を実行するため、5つのデバッグメッセージがすべて表示されます。あなたができることは次のようなものです:

$stateProvider 
    .state('index', { 
    url: "/", 
    templateUrl: "main.html", 
    onEnter: function() { 
     changeMenu(1495); 
    } 
    }) 
関連する問題