0

私が持っているダイアログを開くコントローラで:

$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" promise が実行されないのはなぜですか?

更新関連する可能性があると思うので、さらにコンテキストを追加しました。非表示の iframe の本体からデータを取得しています。私が直接呼び出すと、プロミスは問題なく起動し$scope.close()ます。これは、iframeと関係があるか、オブジェクトをdialog.close()に戻していると思わせます。

4

1 に答える 1