我有一个加载视图和设置控制器的 stateprovider。现在控制器依赖于应该提供更新对象的服务。例如,我有一个状态 - s,带有模板 v 和控制器 c。c 取决于服务 s。s 有方法 - 让我们说“sm”,它从 AJAX 获取数据。现在我希望仅在加载状态但在实例化控制器之前调用“sm”。
我知道它可以通过解析来完成,但是如何在实例化控制器之前订购服务方法的加载。
我正在使用基于 oclazylaod 的函数“loadSequence”,它以特定的顺序加载脚本。
前任。
.state('member.course', {
url: "/course",
templateUrl: "assets/views/course.html",
controller: 'coursecontroller',
resolve: loadSequence('someservice', 'coursecontroller', 'toaster', 'ngImgCrop'),
data: {
css: 'assets/css/course.css'
}
})
我希望在加载我的“courseController”之前调用 someservice.getData 方法。怎么做?
编辑-loadSequence;:-
function loadSequence() {
var _args = arguments;
return {
deps: ['$ocLazyLoad', '$q',
function($ocLL, $q) {
var promise = $q.when(1);
for (var i = 0, len = _args.length; i < len; i++) {
promise = promiseThen(_args[i]);
}
return promise;
function promiseThen(_arg) {
if (typeof _arg == 'function')
return promise.then(_arg);
else
return promise.then(function() {
var nowLoad = requiredData(_arg);
if (!nowLoad)
return $.error('Route resolve: Bad resource name [' + _arg + ']');
return $ocLL.load(nowLoad);
});
}
function requiredData(name) {
if (jsRequires.modules)
for (var m in jsRequires.modules)
if (jsRequires.modules[m].name && jsRequires.modules[m].name === name)
return jsRequires.modules[m];
return jsRequires.scripts && jsRequires.scripts[name];
}
}
]
};
}