2014-11-02 134 views
0

我在使用隔離範圍的指令中使用單向綁定時遇到了問題。爲什麼1-way綁定在angularjs中不起作用?

如果我使用等號進行雙向綁定,並使用如下的數據:{{d.name}},它可以工作。

如果我使用@符號,它不起作用。如果我使用等號並使用如下數據:{{::d.name}},它也會失敗。

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

是否有人可以幫助我瞭解這裏發生了什麼?謝謝。

+0

的@給你單向到一個範圍變量的結合屬性的文本。 The ::給你一個* time *綁定,這是不同的。 – 2015-07-06 23:15:27

回答

3

您嘗試使用的單向綁定語法自從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