我正在尝试将选择封装在自定义指令中,同时在指令声明中保留 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”不存在于指令自己的范围内。 ..
我错过了什么吗?有没有办法做到这一点?