停止在搜索时解析控制器数据

时间:2014-05-07 12:27:05

标签: javascript angularjs service

如果使用$location.search(),有没有办法停止解析控制器数据。

以下是我的代码

App.config(function($routeProvider, $locationProvider) {
    $routerProvider.when('/overview' {
        title:"Overview",
        controller:"OverViewCtrl",
        templateUrl:"pages/overview.html",
        resolve:{
            mainData:function(Service){
            return Service.getOverviewData();
        }
    });
});

在我的控制器中,我使用相同的

App.controller("OverViewCtrl", function($scope, $location, mainData, Service){
    $scope.data = mainData.data;
    $scope.otherData = null;
    Service.getOtherData($location.search(), function(data){
        $scope.otherData = data;
    });
    $scope.search = function(param){
        $location.search(param);
    };
});

每次调用search方法mainData数据都是从服务加载的,有没有办法在搜索时调用getOtherData服务。

1 个答案:

答案 0 :(得分:0)

$routeProvider配置具有reloadOnSearch属性。从文档

  

[reloadOnSearch = true] - {boolean =} - 仅在重新加载路线时   $ location.search()或$ location.hash()更改。

将其设为false

在您的控制器中,然后订阅$route事件$routeUpdate

$ scope。$ on(' $ routeUpdate',function(event,args){      //在这里你可以获得其他数据。 });

检查第二个参数以查看args对象哈希中传递的内容。我相信它包含当前路线和其他一些数据。