我有一个my-edit指令,它有一个value属性,希望绑定一个范围变量。
<my-edit value="myVar"></my-edit>
有没有办法做这样的事情:
<my-edit value="{{varName}}"></my-edit>
其中varName =“myVar”
我想将此指令嵌套在具有“text-field”属性的“my-listbox”指令中
<my-listbox ng-model="myList" text-field="itemProp"></my-listbox>
所以我尝试使用像这样的模板:
<div>
<ul>
<li ng-repeat="item in items">
<my-edit value="item.{{textField}}"></my-edit>
</li>
</ul>
</div>
但显然它不起作用
我想使用文本绑定也不是解决方案。
“my-listbox”的动态生成模板是否可以转到此处?
我在编译函数中尝试过,但由于嵌套的neRepeat指令,它没有那么好用。应该在链接函数中使用$ compile吗?
由于
答案 0 :(得分:6)
这对于angular非常酷,它评估了传递给指令的字符串。这意味着您实际上可以执行value="item[textField]"
,这样就可以了。
例如,如果您的控制器包含如下数据:
$scope.data = {
test: 'test_val',
other: 'other_val'
};
$scope.val = 'test';
你可以像这样把它传递给你的指令:
<directive value="data[val]"></directive>
设置如下:
scope: {
value: '='
},
隔离范围将有scope.value ='test_val',并且只需将原始控制器val更改为'other'即可更新为'other_val'
我制作了一个fiddle,其中设置了这个内容供您使用。
希望这有帮助!