Angular UI对话框承诺仅在重新打开对话框时触发

时间:2013-08-26 21:56:10

标签: javascript angularjs angular-ui

在打开对话框的控制器中我有:

$scope.openDialog = function () {
    var options = dialogOptionsFactory.build('/my/route/file.html', 'ChildController');
    var d = $dialog.dialog(options);
    d.open().then(function (result) {
        if (result) {

            // THIS DOESN'T FIRE UNTIL DIALOG IS REOPENED!
            $scope.myresult = result;

        }
    });
};

在对话框控制器中我有这个(或多或少):

listModule.controller('ChildController', ['$scope', '$rootScope', 'dialog', function ($scope, $rootScope, dialog) {

$scope.uploadComplete = function (ifrm) {
    var response = angular.element(ifrm).contents().find("body").text();
    var responseObj = eval("(" + response + ")"); //Parentheses needed to convert JSON to JS object.
    $scope.close(responseObj.Data);
};

$scope.close = function (result) {
    dialog.close(result);
};

}]);

为什么在我点击再次打开对话框后才执行“then”承诺?

更新我添加了更多上下文,因为我认为它可能是相关的。我从隐藏的iframe的主体获取数据。如果我直接打电话给$scope.close(),承诺就会好起来。这让我觉得它要么与iframe有关,要么我将对象传递给dialog.close()。

1 个答案:

答案 0 :(得分:0)

好吧,因为sirhc太谦虚了,不能将他的评论添加为答案,我会为他做的。 :)答案是将调用包装在$ scope.apply()中以立即通知AngularJS。