我有一个 my-edit 指令,它有一个 value 属性,需要绑定(bind)一个范围变量。
<my-edit value="myVar"></my-edit>
有没有办法做这样的事情:
<my-edit value="{{varName}}"></my-edit>
其中 varName = "myVar"
我想将该指令嵌套在具有“文本字段”属性的“我的列表框”指令中
<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>
但是显然不行
我想使用文本绑定(bind)也不是解决方案。
“我的列表框”的动态生成模板是去这里的方式吗?
我在编译函数中尝试过,但由于嵌套的 neRepeat 指令,效果不佳。是否应该通过在链接函数中使用 $compile 来完成?
谢谢
最佳答案
这是关于 Angular 的一些非常酷的东西,它评估了您传递给指令的字符串。这意味着您实际上只需执行 value="item[textField]"
就可以了。
例如,如果您有一个包含如下数据的 Controller :
$scope.data = {
test: 'test_val',
other: 'other_val'
};
$scope.val = 'test';
你可以像这样将它传递给你的指令:
<directive value="data[val]"></directive>
就是这样设置的:
scope: {
value: '='
},
并且隔离范围将具有 scope.value = 'test_val' 并且只需将原始 Controller val 更改为 'other' 即可更新为 'other_val'
我做了一个fiddle这是为您设置的。
希望这对您有所帮助!
关于angularjs - 动态变量名指令属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22309389/