繁体   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