与指令的链接功能和隔离范围的奇怪交互

时间:2015-04-30 16:01:58

标签: javascript angularjs

我有这个指令:

ngModule.directive('customer', function () {
    return {
        scope: {},
        link: function (scope) {
            scope.meta = 'bar';
        }
    };
});

模板:

<h1>Customers</h1>
<div data-customer>
  <div>Meta: {{ meta }}</div>
</div>

我希望&#39; Meta:bar&#39;出现在模板中。但是,只有&#39; Meta:&#39;出现。请注意,如果我设置&#39;范围:true&#39;,则会显示。

为什么在使用隔离范围时值无法正确绑定?

1 个答案:

答案 0 :(得分:0)

该绑定引用控制器范围。如果要显示附加到指令范围的内容,请将它们插入到指令的模板中,如下所示:

ngModule.directive('customer', function () {
    return {
        scope: {},
        link: function (scope) {
            scope.meta = 'bar';
        },
        template: '<div>Meta: {{ meta }}</div>'
    };
});

<强> Demo

该指令使用隔离范围,虽然它在技术上是控制器范围的子代,但它与它隔离。