动态变量名称指令属性

时间:2014-03-10 19:23:17

标签: angularjs angularjs-directive

我有一个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吗?

由于

1 个答案:

答案 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,其中设置了这个内容供您使用。

希望这有帮助!