[英]angularjs callback / wait for function to finish
我有點被分配給$scope variable
函數所困擾。 需要等到完成為止。
這是分配給$scope variable
的函數 :
$scope.ChooseHome = function() {
ModalWindowService.openChooseHomeDialog($scope);
}
在ModalWindowService中,我有:
function openChooseHomeDialog($scope) {
$scope.animationsEnabled = true;
var modalInstance = $modal.open({
animation: $scope.animationsEnabled,
templateUrl: '/view/user/ChooseHomeDialog.html',
controller: 'chooseHomeDialogController',
windowClass: 'detail-modal-window'
});
modalInstance.result.then(function (CondoID) {
$scope.choosenCondoID = CondoID;
});
}
我想做的是在我從'$ scope.ChooseHome'函數中的模態中獲取變量$$$ scope.choosenCondoID並對其進行一些處理之后。
像這樣的選項:
$scope.ChooseHome = function() {
ModalWindowService.openChooseHomeDialog($scope).then(*do my stuff*); /
ModalWindowService.openChooseHomeDialog($scope).success(*do my stuff*);
}
但這不起作用,我收到這樣的錯誤:
'TypeError: (intermediate value).success is not a function'
嘗試這個:
function openChooseHomeDialog($scope) {
$scope.animationsEnabled = true;
return $modal.open({
animation: $scope.animationsEnabled,
templateUrl: '/view/user/ChooseHomeDialog.html',
controller: 'chooseHomeDialogController',
windowClass: 'detail-modal-window'
}).result;
}
$scope.ChooseHome = function() {
ModalWindowService.openChooseHomeDialog($scope).then(*do my stuff*);
}
而且...就像我評論的那樣...將$ scope傳遞給您的服務是一個壞主意。 您只應在控制器中使用$ scope將數據粘貼至視圖。 服務只需要做某事或返回您可以使用的東西。
進一步使它復雜化..您可能還希望研究controllerAs語法,以便將來對代碼進行驗證;)
您必須從openChooseHomeDialog函數返回您的諾言
...
return modalInstance.result.then(function (CondoID) {
$scope.choosenCondoID = CondoID;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.