我花了好幾個小時嘗試了這段代碼的微小變化,我不明白爲什麼一個工作,另一個不工作。我不明白角度數據綁定
以下是這個場景:我試圖展示一個註冊用戶列表(我用一個簡單的數據庫查詢返回的只是幾列),然後當一個用戶的名字被點擊時,我會從數據庫中檢索有關該用戶的更多信息,並以不同的視圖呈現它。目前,我正在使用ng-click
指令定期執行<a>
元素,該指令設置值爲currentid
。在我的代碼中,我使用$watch()
發送一個新的數據庫查詢,只要currentid
發生變化。這部分似乎正在工作(我看到我的手錶回調輸出console.log()
,數據庫查詢正在吐出正確的數據)...但有時currentid
更改,有時它不會,我不明白爲什麼。
- 一個的jsfiddle它不起作用:http://jsfiddle.net/aLcRL/11/
- 在那裏做了工作的jsfiddle:http://jsfiddle.net/aLcRL/12/
(點擊 「rmunn」 和 「admin」,在表中的鏈接:在下面的「當前ID」值應該更新,請原諒幾乎完全缺乏CSS;我是一個編碼員,而不是圖形設計師(「Dammit,Jim!」),現在我的時區也很晚,所以我沒有這個動機,它是功能性的,它證明了這個問題,並且我將要離開它。)
這兩者之間唯一的區別在於一個與currentid
結合,另一個與vars.currentid
結合。現在,我明白爲什麼綁定到currentid
不適用於父母和孩子的範圍(孩子的價值會掩蓋父母的價值);因爲我來自Python背景,這對我來說很有意義(它類似於Python的實例命名空間如何影響類中定義的任何命名空間)。但在這個jsfiddle中,我只使用一個控制器 - 並不是所有這些變量都在同一個範圍內?
我一直在打我的頭這一切的一天,和幾個堆棧溢出的答案我試圖讀取(如How does data binding work in AngularJS?例如)剛離開我更糊塗了:$apply()
和$digest()
和範圍,噢,我的!所以,如果任何人都可以給我一個很好的簡單的初學者指南來了解Angular的範圍(或者指出我已經寫過的一篇我錯過的),我會非常感激。
「我學過Clojure和Haskell,我可以學習一個簡單的Javascript框架,」我想。 「這很容易。」男孩,我錯了。 :-)
它在[ng-repeat documentation]中(http://docs.angularjs.org/api/ng.directive:ngRepeat) - 「這個指令創建了新的範圍。「我早先完全想到的五個小小的話語,其影響如此之大,謝謝,這完全解釋了我遇到的問題。 – rmunn