2016-04-18 5 views
0

Я не могу понять, почему следующий код не работает. Я следую за ответом here и другими учебными материалами/ответами, но кнопка не отключается, когда поля пусты.

<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> 

приложение/просмотров/обертоны/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' не существует в (внешнем) объеме, на который вы ссылаетесь. Он может быть указан только в элементе '

', где он существует. Вам нужно поместить эти элементы управления в '' где угодно, чтобы они работали. – aaronofleonard

+0

@ Amleonard там все равно вокруг, так как у меня разные действия в зависимости от того, редактирую ли я или добавляю контакт –

+0

Это зависит от вашей формы, известно ли, что вы редактируете? Потому что если это так, вы можете переместить эти кнопки в форму, а затем использовать 'ng-if =" ctrl.isEditing ". Разумеется, 'ctrl.isEditing' будет заменен любым способом, который вы знаете, если доступно редактирование. – aaronofleonard

ответ

1

Я положу их в качестве ответа для более удобного доступа.

addressForm не существует в (внешнем) объеме, на который вы ссылаетесь. Он может быть указан только в пределах элемента <form>, где он существует. Вам нужно поместить эти элементы управления внутри <form> в любом месте для их работы.

Ваша форма информирована о том, редактируете ли вы или нет? Потому что если это так, вы можете переместить эти кнопки в форму, а затем использовать ng-if="ctrl.isEditing". Конечно, ctrl.isEditing будет заменен любым способом, который вы знаете, если доступно редактирование.

Смежные вопросы