私はプロジェクト内で角材を使用しています。私は多くのダイアログを(警告目的のために)使用していますが、今は非常に複雑なダイアログが必要です。Angular Materialダイアログで同じコントローラを使用するにはどうすればいいですか?
これは角素材サイトが使用している例です。
function showDialog($event) {
var parentEl = angular.element(document.body);
$mdDialog.show({
parent: parentEl,
targetEvent: $event,
template: '<md-dialog aria-label="List dialog">' +
' <md-dialog-content>' +
' <md-list>' +
' <md-list-item ng-repeat="item in items">' +
' <p>Number {{item}}</p>' +
' ' +
' </md-list-item></md-list>' +
' </md-dialog-content>' +
' <md-dialog-actions>' +
' <md-button ng-click="closeDialog()" class="md-primary">' +
' Close Dialog' +
' </md-button>' +
' </md-dialog-actions>' +
'</md-dialog>',
locals: {
items: $scope.items
},
controller: DialogController
});
function DialogController($scope, $mdDialog, items) {
$scope.items = items;
$scope.closeDialog = function() {
$mdDialog.hide();
}
}
}
代わりに、それは可能$mdDialog
ためcontroller
を参照しないようにされるだろう、とただそれはそれがあった同じコントローラを使用できるようにしますから呼ばれた?
たとえば、このボタンで呼び出された場合、ダイアログではMyCtrl
コントローラを使用するだけで、ダイアログがスコープ変数にアクセスできるようになります。
<div ng-controller="MyCtrl">
<md-button ng-click="showDialog($event)" class="md-raised">
Custom Dialog
</md-button>
</div>
これは可能ですか?または、変数を前後に渡り続けるために、放送と一緒にlocals
プロパティを継続して使用する必要がありますか?
利用の親コントローラ名を:$ mdDialog.show({ コントローラ:MyCtrl}); – Sandeep
@Sandeep - しかし、そのコントローラーの新しいインスタンスを作成しませんか?したがって、そのダイアログの新しいスコープを作成しますか? – Fizzix