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

时间:2013-12-16 09:01:16

标签: javascript angularjs

所以我正在尝试使用

更新表单提交的路径
$location.path('/search');

但是它没有触发注册到'/search'的路线我也试过了尾随斜线。没什么,我也试过$scope.$apply,但我只是得到了$apply already in progress错误,所以肯定有一个范围。

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

路由器

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" : "/"
        });
});

表单ng-submit回调

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

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

修改

添加此

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

$location.path调用之前显示路线未开始变化。这是Angular 1.2.5中的错误吗?

1 个答案:

答案 0 :(得分:3)

事实证明,我实际上需要在页面的某个位置设置ng-view才能使整个系统正常工作。

似乎有点棘手,但它确实有效。