在模态角度js中返回多个结果

Avi*_*ade 9 javascript modal-dialog angularjs

我有一个angularjs应用程序.我在我的应用程序中添加了一个按钮,当用户点击它时,会弹出一个弹出屏幕.用户应该从2个下拉列表中进行选择,这样我就有两个值需要发送回打开模态屏幕的服务.

打开弹出屏幕的服务

app.service('OriginalService', [ '$modal',
function ($modal) {

this.openDialog = function(){
        var modalInstance = $modal.open({
            templateUrl: 'ModalScreen.html',
            controller: 'ModalController'
        });

        modalInstance.result.then(function (oneFilter, secondFilter) {
            this.filtersMananger.oneFilter= oneFilter;
            this.filtersMananger.secondFilter= secondFilter;
        }, function () {

        });
    };
}]);
Run Code Online (Sandbox Code Playgroud)

在ModalController中,当我单击OK时,我发送了两个值:

app.controller('ModalController', ['$scope', '$modalInstance',
                                     function ($scope, $modalInstance) {

$scope.ok = function () {
        $modalInstance.close($scope.filterMananger.oneFilter, 
                             $scope.filterMananger.secondFilter);
    };
}]);
Run Code Online (Sandbox Code Playgroud)

问题是只有第一个值返回服务.我在其他例子中看到过,他们可能只想出一个结果:

modalInstance.result.then(function (result)
Run Code Online (Sandbox Code Playgroud)

我可以发送两个或值作为结果,还是只能在这种情况下发送带有这两个值的对象?

dfs*_*fsq 15

如果您查看$modal 源代码,您将看到以下行:

var modalInstance = {
    result: modalResultDeferred.promise,
    opened: modalOpenedDeferred.promise,
    close: function(result) {
        $modalStack.close(modalInstance, result);
    },
    dismiss: function(reason) {
        $modalStack.dismiss(modalInstance, reason);
    }
};
Run Code Online (Sandbox Code Playgroud)

从中可以清楚地看出,这close和dismiss方法只接受一个result参数.因此,如果要传递多个,则必须传递对象或数组.