2016-04-18 4 views
0

Ich kann nicht herausfinden, warum der folgende Code nicht funktioniert. Ich befolge die Antwort here und verschiedene andere Tutorials/Antworten, aber die Schaltfläche deaktiviert nicht, wenn die Felder leer sind.

<h3>Add address</h3> 
<div ng-include="'app/views/partials/form.html'"></div> 
<button ng-click="ctrl.cancelAddress()">Cancel</button> 
<button ng-disabled="addressForm.$invalid" class="save-btn" ng-click="ctrl.saveAddress(ctrl.name, ctrl.address, ctrl.country)">Save</button> 

app/views/partials/form.html

<form name="addressForm" novalidate> 
    <input ng-model="ctrl.name" type="text" name="RecipientName" required> 
    <p ng-show="addressForm.RecipientName.$error.required">Username is required</p> 

    <input ng-model="ctrl.address" type="text" name="AddressLineOne" placeholder="Address" required> 
    <p ng-show="addressForm.RecipientName.$error.required">Address is required</p> 

    <select ng-model="ctrl.country"> 
     <option ng-repeat="country in ctrl.countries" value="{{country.name}}">{{country.name}}</option> 
     <p ng-show="addressForm.addressCountry.$error.required">Username is required</p> 
    </select> 
</form> 
+1

'addressForm' existiert nicht im (äußeren) Bereich, auf den Sie verweisen. Es kann nur innerhalb des ''-Elements referenziert werden, wo es existiert. Sie müssen diese Steuerelemente innerhalb der '

' irgendwo für sie arbeiten. – aaronofleonard

+0

@Amleonard gibt es sowieso darum, da ich verschiedene Aktionen abhängig davon habe, ob ich einen Kontakt bearbeite oder hinzufüge –

+0

Es hängt davon ab, ist Ihr Formular bewusst, ob Sie bearbeiten? Wenn ja, können Sie diese Schaltflächen in das Formular verschieben und dann 'ng-if =" ctrl.isEditing "' verwenden. Natürlich würde "ctrl.isEditing" durch jede andere Methode ersetzt werden, die Sie wissen müssen, wenn Bearbeitungen verfügbar sind. – aaronofleonard

Antwort

1

Ich werde für einen leichteren Zugang sie als Antwort setzen.

addressForm existiert nicht im (äußeren) Bereich, auf den Sie verweisen. Es kann nur innerhalb des <form> Elements referenziert werden, wo es existiert. Sie müssen diese Steuerelemente innerhalb der <form> irgendwo für sie arbeiten.

Ist Ihrem Formular bekannt, ob Sie gerade bearbeiten? Wenn ja, können Sie diese Schaltflächen in das Formular verschieben und dann ng-if="ctrl.isEditing" verwenden. Natürlich würde ctrl.isEditing mit jeder Methode ersetzt werden, die Sie wissen müssen, ob es Bearbeitung gibt.