ディレクティブ宣言で ng-options の使用を維持しながら、カスタム ディレクティブで選択をカプセル化しようとしています。
目標は、my ディレクティブを使用してテンプレート内の ng-options の構文を保持できるようにすることですが、それをディレクティブ内の select の ng-options に正しく転送することです。
以上の言葉、コード:
ディレクティブ:
angular.module('myApp').directive("selectField", function() {
return {
restrict: 'EA',
replace: true,
transclude : false,
templateUrl : "/common/tpl/form/select-field.html",
scope : {
label : "@",
model : "=",
options : "&"
}
};
});
テンプレート:
<div class="form-group">
<label for="{{fieldId}}" class="col-lg-2 control-label">{{label | translate}}</label>
<div class="col-lg-10">
<select class="form-control" id="{{fieldId}}" ng-model="model" ng-options="{{options}}"></select>
</div>
</div>
使用法:
<select-field label="myLabel" model="data.mySelectValue" options="p.nom for p in myOptions"></select-field>
そして...エラー:
Error: [$parse:syntax] Syntax Error: Token 'for' is an unexpected token at column 7 of the expression [p.nom for p in preteurs] starting at [for p in preteurs].
オプションを "&" 、 "=" および "@" 属性として試しましたが、何も機能していないようです。
「=」と「&」を使用すると、角度が指定されたエラーで爆発し、「@」属性を使用すると、式はディレクティブ スコープで評価されます。これは機能しますが、「myOptions」がディレクティブ自体のスコープに存在しないため、オプションをレンダリングしません。 ..
何か不足していますか?これを行う方法はありますか?