所以我的问题是这个,我已将控制器定义为
$mdDialog
现在我想在Test2Ctrl
内添加controller:
,问题是 - 我想传递给它FunctionCtrl
- 我已经在上面定义的实际控制器(test1 / test2 / Settings)等等。)
但似乎所有的例子 - 包括AngularMaterials,都在创建一些名为controller: 'SettingsCtrl',
的子函数 - 并使用它 - 作为控制器?!
如果我使用的话会发生什么:controller: 'DialogCtrl',
- 它会抛出一个AngularJS错误,Angular被多次加载......我在对话框内看到整个网站都很小:)
这是我看到的示例 - 而不是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;
}
);
或至少其中的功能,我不想编写代码再次......
{{1}}
答案 0 :(得分:1)
下面是一个快速演示,展示了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或错误/错误的标记有关。