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

AngularJS Directives with jQuery Key Bindings not Properly Loading Bindings When URL Changed via HTML

本文关键字:绑定 AngularJS 指令 加载 密钥 jQuery HTML 通过 URL 带有      更新时间:2023-09-26

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

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

有什么常识可以回答这个问题吗?我会发布代码,但需要调试的内容太多了。

我不习惯用'window.location'或'a href'更改URL,这可能会导致您的问题。我使用状态来更改url。

我在主模块中使用'ui.router',并将$stateProvider、$urlRouterProvider注入config(function())中,然后在函数体上放置状态(页面的URL),并从任何位置将其调用到应用程序中

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.在这里我调用一个状态,以便更改页面首先,你将"$状态"注入到你的控制器中,当你需要更改url时:

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

希望有助于好运。