如何在routeProvider中调用控制器的方法解析函数

时间:2015-12-11 10:19:56

标签: angularjs

我想更新数据,然后显示与此控制器绑定的视图,代码如下

    angular.module('myApp.student', ['ngRoute'])
    .config(['$routeProvider', function($routeProvider) {
        $routeProvider.when('/student', {
            templateUrl: 'student/student.html',
            css: 'student/assets/student.css',
            controller: 'studentCtrl',
            demand: 'admin'
        });
    }])
    .controller('studentCtrl', ['$scope', 'baseDataUrl', '$http', function($scope, baseDataUrl, $http) {
        $scope.update = function() {
            $http.get(baseDataUrl + '/student/list').then(function(res) {
                $scope.students = res.data;
            });
        };

        $scope.orderProp = "name";
        $scope.update();
    }]);

我怎么能这样做,因为我知道无法将控制器注入配置

1 个答案:

答案 0 :(得分:0)

你可以写点像......

angular.module('myApp.student', ['ngRoute'])
.config('routeConfig', function($routeProvider) {
    $routeProvider.when('/student', {
        templateUrl: 'student/student.html',
        css: 'student/assets/student.css',
        controller: 'studentCtrl',
        demand: 'admin',
        resolve: { students : function ($http, baseDataUrl) {
                return $http.get(baseDataUrl + '/student/list').then(function (res) {
                    return res.data;
                });
            }
        }
    });
})
.controller('studentCtrl', ['$scope', function($scope, students) {
    $scope.students = students;

    $scope.orderProp = "name";
}]);

请注意,baseDataUrl必须是常量,或者是调用函数来获取所需数据的提供程序(在这种情况下,它应该类似于baseDataUrl.getUrl())。

有了这个,确保每次访问/student路由时,范围变量$scope.students都包含更新的数据。