当前位置: 首页 > 面试题库 >

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

红明德
2023-03-14
问题内容

我对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) {

        });
    }

});

然后我有我的部分,像这样:

<div class="modal-header">
    <h3>{{modalOptions.headerText}}</h3>
</div>
<form ng-submit="modalOptions.submit()">
<div class="modal-body">
    <label>Name</label>
    <input type="text" data-ng-model="mydata.name">
</div>
<div class="modal-footer">
    <button type="button" class="btn" data-ng-click="modalOptions.close()">{{modalOptions.closeButtonText}}</button>
    <button type="submit" class="btn btn-primary">{{modalOptions.actionButtonText}}</button>
</div>

这个模态被这样调用

<button class="btn btn-primary hidden pull-right" id="save" data-ng-click="showModal()">Save</button>

所以我的问题是如何将名称字段的值返回给控制器?我在网上浏览了所有示例,所有示例都具有打开模式的函数,该函数驻留在控制器内部,这使得打开控制器的函数中也存在来自控制器的$
scope变得容易得多。

我尝试将以下代码添加到服务中的“显示”功能,但无法正常工作。

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

谢谢

PS我在代码中将modalService重命名为ModalService,所以这不是错字。模态将按其应有的方式打开和关闭,我只是无法将字段的值传递回控制器。


问题答案:

在您的按钮中,添加 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);
        });

演示

如果要使用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);
        });
    }

演示



 类似资料:
  • 本文向大家介绍详解AngularJS 模态对话框,包括了详解AngularJS 模态对话框的使用技巧和注意事项,需要的朋友参考一下 在涉及GUI程序开发的过程中,常常有模态对话框以及非模态对话框的概念 模态对话框:在子界面活动期间,父窗口是无法进行消息响应。独占用户输入 非模态对话框:各窗口之间不影响 主要区别:非模态对话框与APP共用消息循环,不会独占用户。 模态对话框独占用户输入,其他界面无法

  • 模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是 Qt 所 独有的,在各种不同的平台下都存在。又有叫法是称为模式对话框,无模式对话框等。 所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进 行交互,直到该对话框关闭。对于非模 态对话框,当被打开时,用户既可选择和该对话框进 行交互,也可以选择同应用程序的其他窗口交互。 在 Qt

  • 问题内容: 我试图创建一个服务来获取json并将其传递给我homeCtrl我可以获取数据,但是当将其传递给我的homeCtrl时,它总是返回undefined。我卡住了。 我的服务: 我的家庭控制器: 问题答案: 您应该从函数返回promise ,当它被解析后,它应该从该函数返回。 厂 同样在控制器内部,您应该调用factory函数,并在service函数解析该调用并将其分配给 码

  • 问题内容: 简而言之:有什么方法可以创建非模式JFace对话框?我试图打电话无济于事。如果我没记错的话,这不是摇摆问题- 这是SWT的缺点,还是我只是在滥用小部件? TIA 问题答案: 使用 似乎是惯例。这对您不起作用吗?

  • 5.4.1 非模态对话框的特点 与模态对话框不同,非模态对话框不垄断用户的输入,用户打开非模态对话框后,仍然可以与其它界面进行交互。 非模态对话框的设计与模态对话框基本类似,也包括设计对话框模板和设计CDialog类的派生类两部分。但是,在对话框的创建和删除过程中,非模态对话框与模态对话框相比有下列不同之处: 非模态对话框的模板必须具有Visible风格,否则对话框将不可见,而模态对话框则无需设置

  • 我正在尝试为用户单击按钮时打开的覆盖对话框创建自己的实现。您在下面看到的代码工作得很好,但不是那么漂亮。我正在寻找一个实现,在这个实现中,我不必为我创建的每个对话框创建一个线程。有没有办法做到这一点? 我一直在浏览各种Java源文件,如和,以弄清楚它们做了什么来阻止线程,直到用户关闭对话框,但我没有设法理解它。此外,我尝试了各种代码片段,包括,例如或。 这是它的样子(请注意:覆盖对话框本身不是窗口