如何在 AngularMaterials mdDialog 中使用我的 Angular 应用程序中定义的现有控制器?

里奇·里维(Ricky Levi)

所以我的问题是,我已经将控制器定义为

angular.module('starter.controllers')
 .controller('Test1Ctrl', function(){ ...
 .controller('Test2Ctrl', function(){ ...
 .controller('SettingsCtrl', function(){ ...

现在我想添加$mdDialog内部Test2Ctrl,问题是 - 我想传递给它controller:- 我已经在上面定义的实际控制器( test1/test2/Settings 等..)

但似乎所有的例子——包括 AngularMaterials,都在创建一些被调用的子函数FunctionCtrl——并使用它——作为控制器?!

那么,如果我确实使用了会发生什么:controller: 'SettingsCtrl',- 它抛出一个 AngularJS 错误,即 Angular 被加载了不止一次......并且我在对话框中看到我的整个站点很小:)

这是我在外面看到的示例 - 而不是controller: 'DialogCtrl',- 我想使用SettingsCtrl或至少使用其中的功能,我不想再次编写代码......

angular.module('starter.controllers')
    .controller('testCtrl', function(){
        $scope.click = function(message){
            $mdDialog.show({
                controller: 'DialogCtrl',
                templateUrl: 'dialogInfo.html',
                targetEvent: ev,
                locals : {
                    message : message
                }
            })...
        }
        function DialogCtrl($scope, $mdDialog, message) {
            $scope.message = message;
        }
    );
高拉夫

下面是一个快速演示,它展示了对modal对话框的现有控制器的重用

angular.module('myApp', ['ngMaterial', 'ngMessages'])
  .controller('MyController', MyController)
  .controller('ModalController', ModalController);

function MyController($scope, $mdDialog) {
  $scope.showAlert = function(ev) {
    $mdDialog.show({
      clickOutsideToClose: true,

      template: '<md-dialog>' +
        '  <md-dialog-content>' +
        '     Hi There {{message}}' +
        '  </md-dialog-content>' +
        '</md-dialog>',

      controller: 'ModalController'
    });
  };
}

function ModalController($scope) {
  $scope.message = 'You are an amazing person!';
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/angular-material/1.1.3/angular-material.min.css" rel="stylesheet" />

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.0/angular-messages.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.0/angular-aria.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.0/angular-animate.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-material/1.1.3/angular-material.min.js"></script>


<div ng-app="myApp" ng-controller="MyController">

  <md-button class="md-primary md-raised" ng-click="showAlert($event)">
    Alert Dialog
  </md-button>

</div>

注意:关于Angular was loaded more than once可能是由于多种原因。显然,无论是什么,它都与对话框中的SettingsCtrl重用无关modal尝试查明该错误,大多数情况下它与错误的文件名或错误的 URL 或错位/错误的标签有关。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我如何在 cake php 3 中应用程序的每个网页中使用控制器的方法

带有Angular 4的MdDialog

从Angular $ mdDialog中访问表单

在我的Angular JS应用程序中,我想知道控制器中使用了哪些服务,模块?

如何在Angular Material $ mdDialog.show中扩展/覆盖默认选项?

如何在kivyMD的MDDialog中插入MDList?

如何在$ mdDialog模式控制器中访问父控制器数据

我如何在离子应用程序中使用Angular DSCacheFactory

如何为我的应用程序中的所有控制器设置 ProducesResponseType?

我在nestJS应用程序(使用authGuard)中使用了password-jwt auth策略,如何访问控制器中的令牌有效负载?

如何在angular js控制器中使用alasql?

Angular mdDialog 控制器代码在缩小时失败

如何在PHP应用程序中使用Angular 2?

从Angular Material 2中的MdDialog返回数据

如何在Windows 7的多个应用程序中使用单个MIDI控制器?

如何在 React 应用程序中使用 Swift 视图控制器?

如何在Websocket symfony应用程序的服务中使用实体,表单,控制器

如何在 Spring 应用程序中使用多个控制器?

我如何在Angular 2中使用'this'jquery选择器

如何在$ mdDialog中的textContent中添加换行符

如何在 Angularjs 的 $mdDialog 中获取 HTML 元素

如何在AngularJs的$ mdDialog中更改样式或添加CSS?

如何在控制器和$ mdDialog之间共享作用域?

我将如何在控制器中使用-> findTaggedServiceIds?

如何在应用程序控制器中测试方法?我的方法使其他测试随机崩溃

如何在我的应用程序中使用 Facebook 登录并在成功登录后移动到下一页/视图控制器?

我如何在angular2中使用给定参数redirectTo子组件

如何仅在首次运行应用程序时在我的iOS应用程序中打开页面视图控制器?

如何在 Angular 7 应用程序中使用 GWT 应用程序作为组件?