簡體   English   中英

angularjs回調/等待函數完成

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM