Angular JS $location.path(...) 不触发路由控制器

2024-06-18

所以我尝试使用更新表单提交上的路径

$location.path('/search');

但它没有触发注册的路线'/search'我也尝试过使用尾部斜杠。没办法,我也试过了$scope.$apply但我刚刚得到$apply already in progress错误所以肯定有一个范围。

为什么这不会调用注册到路由的控制器或加载templateUrl注册到它。

Router

App.config(function ($routeProvider, $locationProvider) {

    $locationProvider.html5Mode(true).hashPrefix('!');

    $routeProvider
        .when("/", {
                "controller"  : "HomeController",
                "templateUrl" : "templates/home.html"
        })
        .when("/search", {
                "controller"  : "SearchResultsController",
                "templateUrl" : "templates/search-results.html"
        })
        .when("/search/:location", {
                "controller"  : "SearchLocationController",
                "templateUrl" : "templates/search-results.html"
        })
        .otherwise({
                "redirect" : "/"
        });
});

Form ng-submit打回来

$scope.doSearchRequest = function (event, params) {
    // Prevent the default action
    event.preventDefault();
    $scope.data = params;

    $location.path('/search/');
};

edit

添加这个

$scope.$on('$routeChangeStart', function(next, current) { 
           $console.log('$routeChangeStart', arguments);
        });

就在之前$location.path调用显示路线没有开始改变。这是一个错误吗Angular 1.2.5?


所以事实证明我实际上需要有一个ng-view整个系统工作的页面上的某个位置。

看起来有点奇怪,但它确实有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular JS $location.path(...) 不触发路由控制器 的相关文章

随机推荐