我用我的項目中的角料。我使用了許多對話框(僅用於提醒目的),但我現在需要相當複雜的對話框。如何在「角度材質」對話框中使用相同的控制器?
這就是角料場使用的例子:
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();
}
}
}
取而代之的是,將有可能無法引用controller
爲$mdDialog
,並只允許它使用相同的控制器它在哪裏叫從?
例如,如果通過該按鈕調用時,對話框會簡單地使用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