2016-04-18 13 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は、利用可能な編集方法があれば知っている方法で置き換えられます。

関連する問題