我正在尝试使用angular bootstrap ui来显示一个模态,它可以解析控制器中的项目。问题是我无法在模态控制器中获得这些已解决的项目。
$scope.showItemsInBill = function(bill){
var modalInstance = $uibModal.open({
animation: $scope.anismationsEnabled,
resolve: {
items: function(){
var items = [];
BillingService.getItemsInBill(bill).then(function(response){
console.log(response);
return response;
});
}
},
templateUrl: 'templates/showitems-modal.html',
controller: 'ShowItemsModalCtrl',
backdrop: 'static'
});
}
模态控制器如下:
angular.controller('ShowItemsModalCtrl', ['$scope', '$uibModalInstance', 'BillingService', 'items', function ($scope, $uibModalInstance, BillingService, items) {
init();
function init(){
console.log('Modal is initializing');
console.log(items);
$scope.items = items;
}
$scope.cancel = function () {
$uibModalInstance.dismiss('cancel');
};
$scope.printBill = function(){
console.log('printing bill');
}
}]);
我在控制台得到的答案是:
history-controller.js:24 [Object] 0:Objectlength:1__proto__:Array [0]
showitems-modal-controller.js:8模态正在初始化
showitems-modal-controller.js:9 undefined
所以我从这里了解到,来自服务的成功回调被调用,但它没有被解析到模态控制器中,但模态控制器被初始化。为什么会这样?
是因为我从成功回调中返回响应。如果是这样,在这种情况下我该怎么办?
答案 0 :(得分:2)
您需要在解决方案中返回承诺
resolve: {
items: function(){
var items = [];
// missing "return"
return BillingService.getItemsInBill(bill).then(function(response){
console.log(response);
return response;
});
}
},