0

我有一个指令,我使用以下方法绑定属性:

scope: {modelVar: "="}

指令模板使用该变量:

<input ng-model="modelVar">

这很好用,直到我将此指令嵌入到另一个指令中。然后,输入指令位于子范围内,与父级的绑定停止工作。

我找到的解决方案是将 modelVar 放在范围内的某个属性中。但是,我需要在我的指令中添加一个控制器,并在这个新属性和直接在范围内的属性之间设置我自己的双向绑定。

有没有一种简单的方法可以避免双向绑定?

请参考这里的代码http://plnkr.co/edit/FiyDYLlJQ9aq2KZm5mIg?p=preview

4

1 回答 1

1

该指令inputControl可以简化为

app.directive('inputControl', function () {
    return {
        restrict: 'A',
        template: '<div control-container>Input: <input ng-model="$parent.modelVar"></div>',
        scope: {
            'modelVar': '='
        }
    }
});

这是范围图

[div inputControl] [modelVar]
                       ^
       |               |

[controlContainer] [$parent.modelVar] <-new scope S

       |             |

       transcluded [Value] <- transcluded scope, not isolated scope, it should be sibling of the new scope S

Demo

于 2013-09-10T03:36:23.363 回答