Angularjs 如何在AngularMaterials mdDialog中使用我的Angular应用程序中定义的现有控制器?
所以我的问题是,我已经将控制器定义为Angularjs 如何在AngularMaterials mdDialog中使用我的Angular应用程序中定义的现有控制器?,angularjs,angular-material,Angularjs,Angular Material,所以我的问题是,我已经将控制器定义为 angular.module('starter.controllers') .controller('Test1Ctrl', function(){ ... .controller('Test2Ctrl', function(){ ... .controller('SettingsCtrl', function(){ ... 现在我想在Test2Ctrl中添加$mdDialog,问题是-我想传递给它的控制器:-一个我已经在上面定义的实际控制器(tes
angular.module('starter.controllers')
.controller('Test1Ctrl', function(){ ...
.controller('Test2Ctrl', function(){ ...
.controller('SettingsCtrl', function(){ ...
现在我想在Test2Ctrl
中添加$mdDialog
,问题是-我想传递给它的控制器:
-一个我已经在上面定义的实际控制器(test1/test2/设置等)
但似乎所有的例子——包括AngularMaterials——都在创建一些称为FunctionCtrl
的子函数,并将其用作控制器
那么,如果我使用:控制器:'SettingsCtrl',
-它会抛出AngularJS错误,AngularJS被多次加载。。。我在对话框中看到了我的整个站点:)
这就是我在那里看到的示例-我不想使用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;
}
);
下面是一个快速演示,展示了在
模式
对话框中重复使用现有控制器的过程:
angular.module('myApp',['ngMaterial','ngMessages']))
.controller('MyController',MyController)
.控制器(“ModalController”,ModalController);
函数MyController($scope,$mdDialog){
$scope.showAlert=功能(ev){
$mdDialog.show({
单击外部以关闭:true,
模板:“”+
' ' +
“你好{{message}”+
' ' +
'',
控制器:“ModalController”
});
};
}
函数ModalController($scope){
$scope.message='你是一个了不起的人!';
}
警报对话框
我认为引用已定义的控制器不会有任何问题。您能否分享您如何定义控制器以及如何在模式中使用它的真实代码片段?您需要为md dialog
提供一个单独的控制器,但您可以将数据从父控制器传递到这个新的对话控制器。@Gaurav这与我上面写的相同(无法共享整个代码,但实际上并没有什么不同)…在Test2Ctrl
里面有一个对话框,我想让它使用我在下面写的SettingsCtrl
。@nextt1你介意分享一个例子吗?-如前所述,所有的例子底部都有一个新函数,我似乎找不到如何传递任何其他信息(除了我知道的$scope
变量之外)这里是一个快速演示:正如我说的,我没有看到任何问题。是的,模板URL
是dialog试图加载整个网站的根本原因&角度错误…修复它-解决整个问题。