2015-12-15 12 views
0

標題說明了一切。我正在使用AngularJS和指令中的jQuery鍵綁定。新指令在具有不同鍵盤佈局的不同頁面上調用。帶jQuery鍵綁定的AngularJS指令未正確加載通過HTML更改URL時的綁定

由於某些原因,當我使用HTML而不是JavaScript更改URL(即單擊<a href="#/link"> vs window.location = '#/link';)時,我遇到了異常行爲。

任何一般的知識,可能是這個答案?我會發布代碼,但是調試太多了。

回答

0

我不使用'window.location'也沒有與'一個href',也許這會導致您的問題更改網址。 我使用狀態來更改網址。

我用「ui.router」到主模塊,並注入$ stateProvider,$ urlRouterProvider配置(函數()),之後在函數體我把狀態(的網址我頁),並且我稱他們從任何地方到應用

1.主模塊與該狀態:

 angular.module('MainApp') 
     .config(function ($stateProvider, $urlRouterProvider, $locationProvider) { //$stateProvider & $urlRouterProvider are from ui.router module       
     .state('floorplan', { 
      url:/floorplan/:param1/:param2/:param3', 
      controller:'myCtrl1', 
      templateUrl:'/assets/modules/part3/part3.html'     
      onEnter: function() { 
      }, 
      onExit: function() {     
      } 
     }) 
     .state('seating', { 
      url: '/seating', 
      template: '<div>Seating is under construction</div>' 
     }) 
     .state('event_details', { 
      url: '/event/details', 
      template: '<div>Event details is under construction</div>' 
     }) 
     .state('reports', { 
      url: '/reports', 
      template: '<div>Reports is under construction</div>' 
     }) 
     .state('part3', { 
      url: '/part3/:activeEventId/:activeHallId/:activeHallVariant', 
      controller: 'part3ctrl', 
      templateUrl: '/assets/modules/part3/part3.html', 
      onEnter: function() { 

      }, 
      onExit: function() { 
      } 
     }) 
     .state('login', { 
      url: '/login', 
      controller: 'LoginCtrl', 
      templateUrl: '/assets/modules/login/login.html', 
      onEnter: function() { 
      }, 
      onExit: function() { 
      } 
     }); 
    $urlRouterProvider.otherwise('floorplan'); //when no route found redirect to login 
}); 

2.ħ ERE我打電話的狀態,以改變頁面 首先你注入「$狀態」到控制器中,當您需要更改網址:

$state.go('floorplan', { 
       'param1': val1, 
       'param2': val2, 
       'param3': val3 
     }); 

希望可以幫助好運。