Używam materiału Angular 1.5 Material Design $mdDialog
w zalecany sposób, używając controllerAs: "dialog"
. W szablonie mam formularz: <form name="fooForm"
. W szablonie mogę uzyskać dostęp do formularza bez problemu, np. ng-disabled="fooForm.$invalid || fooForm.$submitted"
.
Ale jak uzyskać dostęp do tego formularza z poziomu kontrolera $mdDialog
? Z tego co czytałem, to spodziewam się, aby móc to zrobić:
const doFoo =() => {
if (this.fooForm.$dirty) {
Tutaj this
jest kontrolerem dialogowe.
Ale pojawia się błąd: TypeError: Cannot read property '$dirty' of undefined
. I oczywiście, jeśli wstawię punkt przerwania w kodzie, kontroler nie ma właściwości fooForm
.
Próbowałem również użyć $scope
, ale kiedy wstawię punkt przerwania w kodzie $scope
nie ma również właściwości fooForm
.
Oto mój szablon dialogowe:
<md-dialog aria-label="FooBar">
<md-toolbar>
<div class="md-toolbar-tools">
<h2>FooBar</h2>
<span flex></span>
<md-button class="md-icon-button" ng-click="dialog.cancel()">
<md-icon>close</md-icon>
</md-button>
</div>
</md-toolbar>
<form name="fooForm" ng-submit="dialog.ok()" novalidate>
<md-dialog-content>
<div layout="column" layout-padding>
<h2 class="md-headline">Foo</h2>
<div layout="row" layout-xs="column">
...
</div>
</md-dialog-content>
<md-dialog-actions>
<md-button class="md-primary" type="submit" ng-disabled="fooForm.$invalid || fooForm.$submitted">
OK
</md-button>
<md-button ng-click="dialog.cancel()">
Cancel
</md-button>
</md-dialog-actions>
</form>
</md-dialog>
Jak mogę uzyskać dostęp do formularza w $mdDialog
ze sterownika dialogowym?
$ scope.fooForm ... jak zwykle –
Ah, więc' $ scope' wciąż różni się od mojego kontrolera? Pomyślałem, że używanie 'kontroleraAs', które było w' $ scope' było teraz w moim kontrolerze. Wydaje mi się, że ta część trochę mnie martwi. –