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>
私は、ディレクティブ内の範囲は '$' も無いと思いますので、VARコントローラー= [ '$スコープ' 機能($スコープ){VARコントローラー= [ '範囲'、機能(スコープ){ – Roomm
Iでなければなりませんそれが私が試みた問題ではないと思うし、コードの一部がうまく働いているチェックボックス機能を壊してしまった。 – Jamie
どこが未定義ですか?ディレクティブのテンプレートを表示したり、エラーを再現するフィドルを作成する必要があります。 – gyc