为什么1-way绑定在angularjs中不起作用?

为什么1-way绑定在angularjs中不起作用?

问题描述:

我在使用隔离范围的指令中使用单向绑定时遇到了问题。为什么1-way绑定在angularjs中不起作用?

如果我使用等号进行双向绑定,并使用如下的数据:{{d.name}},它可以工作。

如果我使用@符号,它不起作用。如果我使用等号并使用如下数据:{{::d.name}},它也会失败。

您可以在此plunker看到我的完整的例子:http://plnkr.co/edit/8bUl8pZSV8Ryru6GDq2M?p=preview

是否有人可以帮助我了解这里发生了什么?谢谢。

+0

的@给你单向到一个范围变量的结合属性的文本。 The ::给你一个* time *绑定,这是不同的。 – 2015-07-06 23:15:27

您尝试使用的单向绑定语法自从Angular 1.3开始引入。
在您的演示中,您使用的是1.2.25版。
您必须更改脚本链接:

<script data-require="[email protected]" src="https://code.angularjs.org/1.3.0/angular.js" data-semver="1.2.25"></script> 

与第二指令的问题,而是在于@不是单向绑定,它只是需要的属性为文本。
喜欢你会使用它,所以你需要将它传递给指令之前进行插值文本,这样

<h3>Directive 2</h3> 
<p ng-repeat="d in data"> 
    <dir2 d="{{d.name}}"></dir2> 
</p> 

DEMO

+0

你钉了它,谢谢!更新我的Angular用'{{:: d.name}}'语法解决了这个问题。只传递一个字符串是有道理的,不知道它是如何工作的。 – Brent 2014-11-03 00:14:20

+1

我建议你看看这个链接https://umur.io/angularjs-directives-using-isolated-scope-with-attributes/。它很好地解释了如何使用'''''''''''''''''''''''''''''''''''' – pasine 2014-11-03 00:18:11