【问题标题】:How to pass data back from ngDialog to caller controller如何将数据从 ngDialog 传回给调用者控制器
【发布时间】:2017-01-09 15:25:54
【问题描述】:

我正在使用 AngularJS 1.3 和 ngDialog 0.5.9

使用类似下面的代码打开对话框:

function openDialog() {
    $scope.dataToPassToDialog = myData;
    var dialog = ngDialog.open({
        template: 'template.html',
        className: 'ngdialog-theme-default',
        scope: $scope,
    });

    dialog.closePromise.then(function (data) {

    });
}

我在对话框中有一个小表单,当用户关闭对话框时,我需要将该数据传回。 在对话框控制器内部,我正在使用以下方法关闭它:

ngDialog.close();

我需要将数据对象从对话框传回调用控制器,我在文档中找不到任何内容,我试过了

ngDialog.close(myDataFromDialog);

但我无法以任何方式访问它。

我该怎么做?

【问题讨论】:

    标签: angularjs ng-dialog


    【解决方案1】:

    找到了方法,很简单,从 ngDialog 控制器我可以做到

    $scope.closeThisDialog(dataToPassBack);
    

    在页面控制器上

    function openDialog() {
        $scope.dataToPassToDialog = myData;
        var dialog = ngDialog.open({
            template: 'template.html',
            className: 'ngdialog-theme-default',
            scope: $scope,
        });
    
        dialog.closePromise.then(function (data) {
            if (data && data.value && /*check if data.value is what you want*/) {
                var dataFromDialog = data.value;
            }
        });
    }
    

    【讨论】:

      【解决方案2】:

      在你的控制器中创建 $scope.myDataFromDialog

      并在对话框中使用它

      您可以在文档中找到示例:

      https://github.com/likeastore/ngDialog

      $scope.value = true;
      
      ngDialog.open({
          template: 'externalTemplate.html',
          className: 'ngdialog-theme-plain',
          scope: $scope
      });
      
      <script type="text/ng-template" id="externalTemplate.html">
      <p>External scope: <code>{{value}}</code></p>
      </script>
      

      【讨论】:

      • 不确定您在第一行中指的是哪个控制器以及如何访问$scope.myDataFromDialog,但我找到了答案,无论如何谢谢
      猜你喜欢
      • 2021-04-27
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 2014-04-06
      • 2016-10-14
      相关资源
      最近更新 更多