2016-09-07 15 views
1

私はディレクティブの使用を必要とするプロジェクトに取り組んでいます。ディレクティブをngModelにバインドしていましたが、コードをバインド値に変更したときに複数の値をバインドする必要があることがわかりました。 staticValueこれに割り当てられたスコープ変数が未定義になりました。以下は私のコード、指令AngularJS双方向バインディング戻り値なし

<field-Select-Check 
    field-Name="{{fields}}" 
    field-Text="{{fields}}" 
    value="test" 
    static-Value="$parent[fields].staticValue" 
    options="userFields" 
    ng-repeat="fields in nameFields"> 
</field-Select-Check> 
+0

私は、ディレクティブ内の範囲は '$' も無いと思いますので、VARコントローラー= [ '$スコープ' 機能($スコープ){VARコントローラー= [ '範囲'、機能(スコープ){ – Roomm

+1

Iでなければなりませんそれが私が試みた問題ではないと思うし、コードの一部がうまく働いているチェックボックス機能を壊してしまった。 – Jamie

+0

どこが未定義ですか?ディレクティブのテンプレートを表示したり、エラーを再現するフィドルを作成する必要があります。 – gyc

答えて

0

ng-repeatディレクティブは別にカスタムディレクティブの

var app = angular.module('fieldSelectCheck', []); 
app.directive('fieldSelectCheck', function() { 

    var controller = ['$scope', function ($scope) { 

     $scope.checkBoxClick = function() { 
      if ($scope.isChecked === true) { 
       $scope.fieldToggle = true; 
      } else { 
       $scope.fieldToggle = false; 
       $scope.staticValue = ""; 
      } 
     }; 

    }], 

    url = 'Custom/BSI_iMIS_Importer/App/Directives/fieldSelectCheck.html'; 

    return { 
     restrict: 'EA', 
     templateUrl: url, 
     scope: { 
      fieldName: '@', 
      fieldText: '@', 
      options: '=', 
      checkBoxClick: '@', 
      isChecked: '@', 
      fieldToggle: '=?bind', 
      value: '=', 
      staticValue: '=' 
     }, 
     controller: controller 
    }; 
}); 

HTMLテンプレート

<div class="form-group row" data-ng-app="app"> 
    <label for="{{fieldName}}" class="col-lg-2 form-control-label text-right">{{fieldText}}</label> 
    <div class="col-lg-3" data-ng-hide="fieldToggle"> 
     <select class="form-control" name="{{fieldName}}" data-ng-model="value" data-ng-options="option for option in options"> 
      <option value="">-- Please Select A Field --</option> 
     </select> 
    </div> 
    <div class="col-lg-3" data-ng-show="fieldToggle"> 
     <input class="form-control" type="text" data-ng-model="staticValue" /> 
    </div> 
    <div> 
     <input type="checkbox" data-ng-model="isChecked" data-ng-change="checkBoxClick()" /> Static Value 
    </div> 
</div> 

実装です。カスタムディレクティブは分離スコープを作成します。 ng-repeatディレクティブは、継承されたスコープを想定しています。

<div ng-repeat="fields in nameFields"> 
    <field-select-check 
     field-name="{{fields}}" 
     field-next="{{fields}}" 
     value="test" 
     static-value="valueList[fields]" 
     options="userFields"> 
    </field-Select-Check> 
</div> 
関連する問題