我对 Angular 相当陌生,并试图制作一个指令来构造一个表单输入,通常是一个文本输入,但有时是一个基于输入是否与选项数组相关联的选择框。简化一下,我的代码大致如下所示:
html
<init ng-init = "ops = [
{value:'hello',label:'Hello All'},
{value:'bye',label:'Good-bye everyone'}]"></init>
<init ng-init = "fType =
{id:'greeting',label:'Greeting',type:'enum', 'options':ops}">
</init>
<simpleselect field="fType" ng-Model="foomodel"></simpleselect>
{{foomodel}}
指示
.directive('simpleselect',function(){
return {
restrict: 'E',
replace:true,
template:[
'<div><select ',
'ng-if ="type=\'select\'"',
'name="{{field.id}}"',
'ng-model="ngModel" ',
'ng-options="option.value as option.label for option in field.options">',
'</select>{{ngModel}}</div>',
].join(),
scope:{
field:'=',
ngModel:'='
},
link:function(scope, elem, attrs, ctrl){
scope.type = 'select';
}
}
});
这几乎可以工作。如果我删除选择框上的 ng-if,我的选择框和我的模型保持同步就好了。但我想要的是能够在指令中选择哪个控件。这是对 ng-if 的滥用吗?还有其他方法吗?