我有一个角度引导模态对话框,如下所示:
var modalInstance = $modal.open({
templateUrl: '/views/core/common/modalProjectChange.html',
controller: ModalChooseProjectCtrl,
resolve: {
items: function () {
ProjectConfigurationService.getAll("", function (_prjl) {
return _prjl;
});
}
...
});
其中
var ModalChooseProjectCtrl = function ($scope, $modalInstance, items) {
console.log('called ModalChoose, items' + items);
angular.forEach(items, function (value, key) {
// do stuff...
});
}
尽管items函数执行正常(我可以看到来自调用的ProjectConfigurationService接收数组的网络连接),该行名为ModalChoose,items' +项目打印项目未定义。请帮我理解原因。
答案 0 :(得分:2)
您没有从resolve函数(!)返回任何内容。 items
函数的结果被注入模态,因为你没有返回任何东西,所以没有注入。如果您正在使用异步API,则可以返回一个promise,并且将为模态注入一个promise promise值。
简而言之:你需要在你的解析函数中返回一些内容:
resolve: {
items: function () {
//RETRUN missing here
return ProjectConfigurationService.getAll("", function (_prjl) {
return _prjl;
});
}
...
在您的情况下,您似乎正在使用异步API,因此您需要确保您的服务使用promises(getAll
应该返回一个承诺,回调在这里不起作用。)