从angularjs模态对话框服务返回数据

 陈杰铭雅意 发布于 2023-02-04 18:03

我对AngularJS很新,并且在从模态对话服务返回数据时遇到问题.基本上,我复制了Dan Wahlin的服务http://weblogs.asp.net/dwahlin/archive/2013/09/18/building-an-angularjs-modal-service.aspx,并从我的控制器调用它.

myApp.controller('MyController', function($scope, ModalService) {
    window.scope = $scope;
    $scope.mydata = {name: ""};

    $scope.showModal = function () {

        var modalOptions    = {
            closeButtonText: 'Cancel',
            actionButtonText: 'Save',
            headerText: 'Save Dialog'
        }

        ModalService.showModal({}, modalOptions).then(function (result) {

        });
    }

});

然后我就像这样:


这个模态被调用如下:


所以我的问题是如何将名称字段的值返回给控制器?我已经浏览了整个网络,并且所有示例都具有在控制器中打开模态驻留的功能,这使得它更容易,因为控制器中的$ scope也存在于打开模态的函数中.

我尝试将以下代码添加到服务中的"show"函数,但它不起作用.

    tempModalDefaults.resolve = function($scope) {
        mydata = function () {
            return $scope.mydata;
        }
    }

谢谢

PS我在我的代码中将modalService重命名为ModalService,所以这不是拼写错误.模态打开和关闭应该是,我只是无法将字段的值传递回控制器.

1 个回答
  • 在按钮中添加 data-ng-click="modalOptions.ok(mydata)"

    <button type="submit" class="btn btn-primary" data-ng-click="modalOptions.ok(mydata)">{{modalOptions.actionButtonText}}</button>
    

    你可以从以下方面得到它:

    ModalService.showModal({}, modalOptions).then(function (result) {
                  console.log(result.name);
            });
    

    DEMO

    如果要使用modalOptions.submit函数,则需要稍微更改一下代码

    在HTML中,传递给mydatato modalOptions.submit函数:

    <form ng-submit="modalOptions.submit(mydata)">
    

    您的模型服务,替换show功能:

    return $modal.open(tempModalDefaults); //remove the .result
    

    你的控制器:

    $scope.showModal = function () {
    
            var modalOptions    = {
                closeButtonText: 'Cancel',
                actionButtonText: 'Save',
                headerText: 'Save Dialog',
                submit:function(result){
                  $modalInstance.close(result);
                }
            }
    
            var $modalInstance = ModalService.showModal({}, modalOptions);
            $modalInstance.result.then(function (result) {
                 console.log(result.name);
            });
        }
    

    DEMO

    2023-02-04 18:04 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有