修改的解析绑定属性没有隔离范围

时间:2014-06-20 15:45:02

标签: angularjs

我有以下HTML:

<div ng-app="app">
  <div ng-controller="FooController">
    <p>{{ values.data }}</p>
    <div foo-bar="values.data"></div>
  </div>
</div>

values.dataFooController中定义,并且已传递给fooBar属性指令(它没有独立的范围),因此该指令可以直接修改它。

fooBar指令中,我正在解析属性并分配值,但FooController中的值未被修改,只有本地fooBar&# 39;副本。

我该如何做到这一点?

我创建了一个Codepen来演示这个:http://codepen.io/jviotti/pen/ghnkc?editors=101 在Codepen中,打印文本应为Baz,而不是Foo

2 个答案:

答案 0 :(得分:1)

我可以在js中为您提供问题解决方案,因为我不熟悉Coffee。使用解析设置数据的语法是不同的

getter = $parse(attributes.fooBar);
setter=getter.assign;
setter(scope,"Baz");

另见文档https://docs.angularjs.org/api/ng/service/ $ parse

答案 1 :(得分:0)

Here是直接使用范围的一种解决方案:

app.directive 'fooBar', ($parse) ->
  restrict: 'E'
  link: (scope, element, attributes) ->
    scope.values.data = 'Baz'

顺便说一句:我刚刚看到你限制你对元素('E')的干扰,并试着在你的例子中将它作为属性应用。这样就不会应用该指令。