动态变量名称指令属性

Rui*_*tes 3 angularjs angularjs-directive

我有一个my-edit指令,它有一个value属性,期望绑定一个scope变量.

<my-edit value="myVar"></my-edit>
Run Code Online (Sandbox Code Playgroud)

有没有办法做这样的事情:

<my-edit value="{{varName}}"></my-edit>
Run Code Online (Sandbox Code Playgroud)

其中varName ="myVar"

我想将此指令嵌套在具有"text-field"属性的"my-listbox"指令中

<my-listbox ng-model="myList" text-field="itemProp"></my-listbox>
Run Code Online (Sandbox Code Playgroud)

所以我尝试使用如下模板:

<div>
    <ul>
        <li ng-repeat="item in items">
            <my-edit value="item.{{textField}}"></my-edit>          
        </li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

但显然它不起作用

我想使用文本绑定也不是解决方案.

是一个动态生成的模板"my-listbox"的方式去哪里?

我在编译函数中尝试过,但由于嵌套的neRepeat指令,它没有那么好用.应该在链接函数中使用$ compile吗?

谢谢

has*_*sin 6

这是非常酷的角度,它评估了传递给指令的字符串.这意味着你实际上可以做到value="item[textField]",这将有效.

例如,如果你有一个控制器包含这样的数据:

$scope.data = {
    test: 'test_val',
    other: 'other_val'
};
$scope.val = 'test';
Run Code Online (Sandbox Code Playgroud)

您可以像这样将它传递给您的指令:

<directive value="data[val]"></directive>
Run Code Online (Sandbox Code Playgroud)

这是这样设置的:

scope: {
    value: '='
},
Run Code Online (Sandbox Code Playgroud)

隔离范围将具有scope.value ='test_val'并且仅通过将原始控制器val更改为'other'将更新为'other_val'

我设置了一个小提琴,供你玩.

希望这可以帮助!

  • 如果你真的想我无法阻止你,虽然我确实认为很多很多其他人最终会遇到同样的问题. (3认同)