我试图在点击按钮时加载角度js1.5中的md-dialog,我看到的是模式弹出的html标记,但不是控制器加载该组件。以下是显示md对话框的标记 调用对话框的文件
$mdDialog.show ({
template: require('../traderdialog/traderdialog.html'),
controller: Controller,
controllerAs: 'vm',
locals : {
traderId : traderId
},
clickOutsideToClose : true
});
}
所以,当我做控制器时:控制器会像我在目录结构中那样进入不同的组件。 我的traderdialog.js代码如下
angular.module('dashboard')
.component('traderdialog', {
template: require('./traderdialog.html'),
controller: Controller,
controllerAs: 'vm',
bindings: {
}
});
function Controller( $mdDialog) { *some code* }
答案 0 :(得分:0)
$mdDialog.show ({
template: require('../traderdialog/traderdialog.html'),
controller: function ControllerName($scope){
$scope.data = "Controller Loaded";
},
locals : {
traderId : traderId
},
clickOutsideToClose : true
});
}
或强>
$mdDialog.show ({
template: require('../traderdialog/traderdialog.html'),
controller: controllerName,
locals : {
traderId : traderId
},
clickOutsideToClose : true
});
}
function controllerName($scope){
$scope.data = "Controller Loaded";
}
答案 1 :(得分:0)
您应该将所需的数据从父控制器注入模态范围。当模态打开时,它有自己的范围。
$mdDialog.show ({
template: require('../traderdialog/traderdialog.html'),
controller: 'MyCtrl',
locals : {
traderId : traderId
},
clickOutsideToClose : true
});
}
现在,让我们为你的模态traderdialog.html
定义你的控制器。
angular.module('app').controller('MyCtrl',['traderId', function(traderId){
console.log(traderId);
}]);
现在traderId
将反映您的模态。
答案 2 :(得分:0)
在mdDialog中有两种使用控制器的方法,其中一种方法是在保留范围内使用与父节点相同的范围:
$mdDialog.show({
controller: function () {
return self;
},
templateUrl: 'templates/mdDialog.html',
parent: angular.element(document.body),
targetEvent: ev,
clickOutsideToClose: false,
bindToController: true,
scope: $scope,
hasBackdrop: true,
preserveScope: true
});
另一个用于controllerAs属性,并初始化它:
$mdDialog.show({
controller: DialogController,
templateUrl: 'templates/mdDialog.html',
parent: angular.element(document.body),
targetEvent: ev,
clickOutsideToClose: true,
controllerAs: 'DlgCtrl',
bindToController: true,
locals: {
formData: $scope.formData,
}
})
您可以使用DlgCtrl.formData语法访问您的本地人。