コントローラー内のフォームにアクセスできますか? 質問する

コントローラー内のフォームにアクセスできますか? 質問する

現在、以下を使用しています。

$scope.$$childHead.customerForm[firstName]、 となることによって:

<form name="customerForm">
  <input type="text" name="firstName" 
         ng-model="data.customer.firstName" 
         tabindex="1"  
         ng-disabled="!data.editable" 
         validationcustomer />
</form>

しかし、これは Chrome でのみ機能します。次に、次のことを試しました。

$scope.editCustomerForm[firstName]、 となることによって:

<form name="customerForm" ng-model="editCustomerForm">
  <input type="text" name="firstName" 
         ng-model="data.customer.firstName" tabindex="1"  
         ng-disabled="!data.editable" 
         validationcustomer />
</form>

動作しません。フォームは Foundation タブ内にあることに注意してください。どうすればアクセスできますかfirstName?

編集: Foundation タブ内にある場合、formは に追加されないようです。scope

誰かこれに対する解決策を持っていますか?

ベストアンサー1

入力にアクセスできない理由は、Foundationタブ(またはng-repeat?)がスコープを分離するこれを解決する一つの方法は、コントローラーとして構文:

<div ng-controller="MyController as ctrl">

<!-- an example of a directive that would create an isolate scope -->
<div ng-if="true">

<form name="ctrl.myForm">
    ...inputs
    Dirty? {{ctrl.myForm.$dirty}}

    <button ng-click="ctrl.saveChanges()">Save</button>
</form>

</div>

</div>

次に、次のようにコード内で FormController にアクセスします。

function MyController () {
    var vm = this;
    vm.saveChanges = saveChanges;

    function saveChanges() {

       if(vm.myForm.$valid) { 
            // Save to db or whatever.
            vm.myForm.$setPristine();
       }
}

おすすめ記事