AngularJs指令编译函数和隔离范围

时间:2016-06-11 14:22:37

标签: angularjs

我的问题在下面的plnkr

中得到了证明

Plnkr

  <ntimes repeat=10 >
      <h1>Hello World - 10 {{smsg}}</h1>
      <h4>More text</h4>
    </ntimes>

指令:

directive('ntimes', function() {
return {
    restrict: 'E',
    scope:{
      smsg: '='
    },
    compile: function(tElement, attrs) {
        var content = tElement.children();
        for (var i = 0; i < attrs.repeat - 1; i++) {
            tElement.append(content.clone());
        }
        tElement.replaceWith(tElement.children());

        return function(scope,elem,attr){
          scope.smsg='abc';
        }
    }
}
})

我有一个返回链接函数的编译函数,并且指令范围是隔离的。当我在链接函数中更新范围变量时,页面不会呈现更新的值。我期待看到abc而不是xyz。

请帮忙

1 个答案:

答案 0 :(得分:0)

使用双向数据绑定时,必须确保变量连接正确。

这意味着在你的指令中,你声明smsg范围变量将与将在DOM中声明的其他东西进行双向数据绑定。

现在看看DOM这个&#34;链接&#34;缺少哪个为您提供此错误。要解决此问题,您必须将您的html更改为此<ntimes smsg="smsg" repeat=10 >

当你做新的smsg将等于&#39; abc&#39;。