AngularJS:不是在 RouteProvider 而是在 Controller 中解决?

标签 angularjs angularjs-scope angularjs-routing

我在这里看到了一些示例代码 Delaying AngularJS route change until model loaded to prevent flicker

虽然这是正确的方法,但我需要让我的 Controller 仅在解析完成加载时才加载,通常周围的大多数示例都会告诉您将代码置于 routeprovder 中的解析下作为内联函数,但这听起来不对。 Controller 需要它,所以为什么不让 Controller 实现要解析的功能。这听起来正是我想要的,即。这似乎使用原型(prototype)模式??

function PhoneListCtrl($scope, phones) {
  $scope.phones = phones;
  $scope.orderProp = 'age';
}

PhoneListCtrl.resolve = {
  phones: function(Phone, $q) {
    // see: https://groups.google.com/forum/?fromgroups=#!topic/angular/DGf7yyD4Oc4
    var deferred = $q.defer();
    Phone.query(function(successData) {
            deferred.resolve(successData); 
    }, function(errorData) {
            deferred.reject(); // you could optionally pass error data here
    });
    return deferred.promise;
  }
}

问题是我的 Controller 是这样的
'use strict';

angular.module('TestApp')
  .controller('ItemsCtrl', function ($scope) {
});

那么,当我的 Controller 在模块中声明时,如何在 Controller 上应用新功能?

我真正需要的是
 TestCtrl.resolve = {
      items: function( $q) {
          ..........
        return deferred.promise;
      }
    }

这将允许我在我的路由提供者中拥有..
  when('/items', {
    templateUrl: 'views/items.html', 
    controller: 'TestCtrl', 
    resolve: 'TestCtrl.resolve'}). // Need to use ' around resolve?

但我很困惑如何让它发挥作用?

我真的很喜欢任何反馈,我很茫然。

最佳答案

如果您想使用带有 .controller 语法的解析,则无法像 'TestCtrl.resolve' 那样定义,那么您必须在 route provider 中定义内联。 routeprovider 中的内联解析的优点是您可以轻松地重用 Controller ,但使用相同的 Controller 并更改解析函数中的逻辑

关于AngularJS:不是在 RouteProvider 而是在 Controller 中解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17721311/

相关文章:

javascript - 带有回调的一页上的多个自定义指令

angularjs - 使用 angularjs 动态 url 路由

AngularJS 显示来自 routeProvider 的对话框

css - 在浏览器调整大小之前,AngularDart NgComponent 不存在

javascript - Requirejs 依赖不起作用

javascript - 使用不同的 Controller 检索另一个页面上的选择选项

javascript - 如何从 Angular 自定义指令访问 HTML 视频功能?

javascript - AngularJs 指令链接函数无法更改 Controller 范围内定义的变量

javascript - 指令没有正确获取属性

javascript - AngularJS 仅在浏览器的后退按钮上重定向路由