当URL通过HTML更改时,带有jQuery密钥绑定的AngularJS指令无法正确加载绑定

时间:2015-12-15 15:06:24

标签: javascript jquery html angularjs

标题说明了一切。我在指令中使用AngularJS和jQuery键绑定。在具有不同键盘布局的不同页面上调用新指令。

出于某种原因,当我使用HTML而不是JavaScript更改网址时(即点击<a href="#/link"> vs window.location = '#/link';),我遇到了异常行为。

任何可能是答案的一般知识?我会发布代码但是调试太多了。

1 个答案:

答案 0 :(得分:0)

我不会用&#39; window.location&#39;来改变网址。也许这会导致你的问题。 我使用状态来改变网址。

我将&#39; ui.router&#39; 用于主模块,并将 $ stateProvider,$ urlRouterProvider 注入 config(function())< / strong>,之后在函数体上我把状态(我的页面的网址),我从任何地方调用它们到应用程序

<强> 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。在这里我称之为状态,以便更改页面   首先,你注入了'$ state&#39;进入你的控制器,当你需要更改网址时:

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

希望有助于好运。