参考这个问题在这里 https://stackoverflow.com/questions/33431797/angularjs-multiple-resolve, 我有同样的问题。
我们如何设置多重解析,其中一个当前验证另一个与加载顺序哪个加载控制器和脚本?
这是我的state config
:
.state('app.example', {
url: "/example",
templateUrl: "assets/views/example.html",
resolve:{
loadSequence: loadSequence('jquery-sparkline', 'exampleCtrl')
},
title: 'example',
ncyBreadcrumb: {
label: 'example'
}
})
这是我的loadsequece
功能:
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];
}
}]
};
}
这是我的currentAuth
工厂:
currentAuth: ['Auth', function(Auth) {
return Auth.$requireSignIn()
}]
如中所述ui-router 的文档 https://github.com/angular-ui/ui-router/wiki :
解析属性是一个地图对象。地图对象包含以下键/值对:
key – {string}:要注入控制器的依赖项的名称。
工厂 - {字符串|函数}:
如果是字符串,则它是服务的别名。
否则,如果是函数,则将其注入,并将返回值视为依赖项。如果结果是一个承诺,则在实例化控制器并将其值注入控制器之前解决它。
这样您就可以在状态解析中配置状态添加功能:
.state('app.example', {
url: "/example",
templateUrl: "assets/views/example.html",
resolve: {
scripts: loadSequence('jquery-sparkline', 'exampleCtrl').deps,
currentAuth: function(Auth){ return Auth.$requireSignIn();}
},
title: 'example',
ncyBreadcrumb: {
label: 'example'
}
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)