【发布时间】:2013-07-17 06:38:14
【问题描述】:
我在这里看到了一些示例代码Delaying AngularJS route change until model loaded to prevent flicker
虽然这是正确的方法,但我需要让我的控制器仅在解析完成加载时才加载,通常周围的大多数示例都会告诉您将代码置于 routeprovder 中的解析下内联函数,但这听起来是错误的。控制器需要它,所以为什么不让控制器实现要解析的功能。这听起来正是我想要的,即。这好像是用原型模式??
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;
}
}
问题是我的控制器是这样的
'use strict';
angular.module('TestApp')
.controller('ItemsCtrl', function ($scope) {
});
那么,当我的控制器在模块中声明时,如何在控制器上应用新功能?
我真正需要的是像
TestCtrl.resolve = {
items: function( $q) {
..........
return deferred.promise;
}
}
这将允许我在我的路由提供者中拥有..
when('/items', {
templateUrl: 'views/items.html',
controller: 'TestCtrl',
resolve: 'TestCtrl.resolve'}). // Need to use ' around resolve?
但我很困惑如何让它发挥作用?
我真的很想得到任何反馈,但我很茫然。
【问题讨论】:
标签: angularjs angularjs-scope angularjs-routing