嵌套指令和转换

时间:2013-09-10 02:58:22

标签: angularjs

我有一个使用以下命令绑定属性的指令:

scope: {modelVar: "="}

指令模板使用该变量:

<input ng-model="modelVar">

这很好用,直到我在另一个指令中转换这个指令。然后,input指令存在于子作用域中,与父作业的绑定停止工作。

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

有没有直接的方法可以避免双向绑定?

请参阅此处的代码http://plnkr.co/edit/FiyDYLlJQ9aq2KZm5mIg?p=preview

1 个答案:

答案 0 :(得分: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