我有以下HTML:
<div ng-app="app">
<div ng-controller="FooController">
<p>{{ values.data }}</p>
<div foo-bar="values.data"></div>
</div>
</div>
values.data
在FooController
中定义,并且已传递给fooBar
属性指令(它没有独立的范围),因此该指令可以直接修改它。
在fooBar
指令中,我正在解析属性并分配值,但FooController
中的值未被修改,只有本地fooBar
&# 39;副本。
我该如何做到这一点?
我创建了一个Codepen来演示这个:http://codepen.io/jviotti/pen/ghnkc?editors=101
在Codepen中,打印文本应为Baz
,而不是Foo
。
答案 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'
)的干扰,并试着在你的例子中将它作为属性应用。这样就不会应用该指令。