如何通过输入值的角度莫代尔服务控制器 [英] How to pass input value to controller in Angular Modal service

查看:117
本文介绍了如何通过输入值的角度莫代尔服务控制器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用 角模式服务:

Using this angular modal service:

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

        var modalDefaults = {
            backdrop: true,
            keyboard: true,
            modalFade: true,
            templateUrl: '/templates/modal.html'
        };

        var modalOptions = {
            closeButtonText: 'Close',
            actionButtonText: 'OK',
            headerText: 'Proceed?',
            bodyText: 'Perform this action?'
        };

        this.showModal = function (customModalDefaults, customModalOptions) {
            if (!customModalDefaults) customModalDefaults = {};
            customModalDefaults.backdrop = 'static';
            return this.show(customModalDefaults, customModalOptions);
        };

        this.show = function (customModalDefaults, customModalOptions) {
            //Create temp objects to work with since we're in a singleton service
            var tempModalDefaults = {};
            var tempModalOptions = {};

            //Map angular-ui modal custom defaults to modal defaults defined in service
            angular.extend(tempModalDefaults, modalDefaults, customModalDefaults);

            //Map modal.html $scope custom properties to defaults defined in service
            angular.extend(tempModalOptions, modalOptions, customModalOptions);

            if (!tempModalDefaults.controller) {
                tempModalDefaults.controller = function ($scope, $modalInstance) {
                    $scope.modalOptions = tempModalOptions;
                    $scope.modalOptions.ok = function (result) {
                        $modalInstance.close(result);
                    };
                    $scope.modalOptions.close = function () {
                        $modalInstance.dismiss('cancel');
                    };
                }
            }

            return $modal.open(tempModalDefaults).result;
        };

    }]);

我无法理解如何从模态传递值(其中有一个输入)控制器。

这是我的模式:

<input type="text" class="form-control" id="{{modalOptions.inputName}}" name="{{modalOptions.inputName}}" data-ng-model="modalOptions.inputVal" data-ng-if="modalOptions.inputName"  />
<button type="button" class="btn"
            data-ng-click="modalOptions.close()">{{modalOptions.closeButtonText}}</button>
<button class="btn btn-primary"
            data-ng-click="modalOptions.ok();">{{modalOptions.actionButtonText}}</button>

控制器:

$scope.addTopic = function () {

        var modalOptions = {
            closeButtonText: 'Cancel',
            actionButtonText: 'Create Topic',
            inputName: 'topicName'
        };

        modalService.showModal({}, modalOptions).then(function (result) {
            // I tried...
            var input = $scope.inputName; // and...
                input = result;
            $log.log("Adding topic '" + input + "' to publication no " + $scope.publication.id);
        });
    }

所以输入的是在 modalOptions 一种选择,而是当用户输入一个值,单击OK,没有被发送到控制器。 $ scope.inputName 收益未定义也是如此结果

So the input is an option in modalOptions but when the user enters a value and clicks ok, nothing is sent to the controller. $scope.inputName returns undefined and so does result.

在理想情况下,我想,象这样的目的是最终{输入:{名称:'inputName',值:'ABCDE'}}

Ideally, I want to end up with an object like so { inputs : {name: 'inputName' , value: 'abcde'} }.

推荐答案

尝试在角UI引导的决心方法

Try the resolve method in Angular UI Bootstrap

var modalOptions = {
    resolve: {
        myvar: function () {
            return $scope.myvar;
        }
    }
};

modalService.showModal(modalOptions);

这篇关于如何通过输入值的角度莫代尔服务控制器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆