我编写 Angular Controller 的风格是这样的(使用 Controller 名称而不是函数)
angular.module('mymodule', [
])
.controller('myController', [
'$scope',
function($scope) {
// Some code here
}
]);
我现在需要的是在提供我想要定义解析部分的路线时:
$routeProvider.when('/someroute', {
templateUrl: 'partials/someroute.html',
resolve: myController.resolve}) // THIS IS THE CRITICAL LINE
由于 Controller 被定义为名称,如何完成下面的解析部分?
为了更详细地说明,我想在解析路由之前从服务器加载一些数据,然后在 Controller 中使用这些数据。
更新:更准确地说,我希望每个模块都有其“解析”函数,该函数将在执行该 Controller 的 root 之前调用。 this post中的解决方案(由 Misko Hevery 回答)完全符合我的要求,但我没有将 Controller 作为函数,而是作为名称。
最佳答案
这也可以
var MyController = myApp.controller('MyController', ['$scope', 'myData', function($scope, myData) {
// Some code here
}]);
MyController.resolve = {
myData: ['$http', '$q', function($http, $q) {
var defer = $q.defer();
$http.get('/foo/bar')
.success(function(data) {
defer.resolve(data);
})
.error(function(error, status) {
defer.reject(error);
});
return defer.promise;
}]
};
关于Angularjs 将 Controller 解析为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14980805/