Angularjs 将 Controller 解析为字符串

标签 angularjs

我编写 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/

相关文章:

javascript - 在 angularJS 中使用 ng-style 而不是 style 时出错

css - AngularJS:在占位符 div 内移动一个 div

javascript - 使用 PhoneGap/Cordova 时应用程序和服务器之间通信的最佳实践

javascript - 如何根据index.html页面中的url使用ng-if?

angularjs - 如何使用http下载angular js中的二进制文件

Javascript (angularJS) : filter by multiple field

angularjs - 使用 Angular js 查找给定数字的最后 4 位数字

data-binding - 单页应用程序、永久链接和 ngView?

javascript - 如何防止输入类型="number"取e

javascript - Angularjs 中的服务成功响应后,将数据加载到 DOM 中的延迟太多