即使在申请后,AngularJs路径也不会改变

时间:2016-09-12 09:18:47

标签: javascript angularjs routing directive

我有一个关于通过自定义指令修改路径的快速问题。我设置了一个菜鸟主题,并建立了一个链接功能。此函数中的所有内容都可以正常工作,但是通过$location.path进行的网址转换不起作用。即使使用$rootScope.apply后,它也不会改变。

define([
    '../module',
    '../namespace'
],
function (module, namespace) {
    module.directive(namespace + '.menubarDirective', function ($location,     $rootScope) {
        return {
            restrict: 'EA',
            replace: 'true',
            templateUrl: 'scripts/app/menubar/views/menubar.html',
            scope: {},
            controller: function () {
            },
            link: function (scope, element, attrs) {

                $("#menubarStoreButton").click(function () {
                    $('.active').removeClass('active');
                    $(this).addClass('active');
                    $location.path('/store');
                    $rootScope.$apply();
                })

            }
        }
    });
});

为清楚起见,我使用requirejs并定位$ location和$rootScope。奇怪的是,$location.path()在替换之前给出了一条空路径。此外,该课程的位置是活跃的'按预期工作。

感谢。

2 个答案:

答案 0 :(得分:1)

尝试使用$ timeout -

$("#menubarStoreButton").click(function() {
    $('.active').removeClass('active');
    $(this).addClass('active');
    $timeout(function() {
        $location.path('/store');
    });
})

答案 1 :(得分:1)

我想知道您的路径是否已经/store并且您想要重新加载页面尝试导航尝试$window.location.href = "/store"; 参考:$location$window