我在我的AngularJS應用程序中看到一些非常奇怪的行爲。
當製作一個$廣播時,(僅)接收器被激發兩次。
對整個應用程序的影響就好像接收器只被解僱一次。 (即只有一件物品被添加到籃子中)。
如果您兩次觸發$廣播(即在觸發$廣播的按鈕上單擊兩次),您將收到四次接收器執行,但是正確添加了兩個項目的數量。
是否存在類似電子表格的重新計算? $ scope函數是否需要不影響'普通'javascript變量?
我的問題是,我添加了一個alert
,它顯示兩次。
我做了一些更多的工作在調試這個:
我添加了計數的時間被接收的廣播數的計數器。
如果範圍(沒有美元)是全球性的,我會得到加倍的結果。如果它的範圍是Ctlr函數的本地範圍,那麼我得到一個非加倍的結果。
我可以以某種方式創建我的控制器的兩個實例嗎?
我可以從firebug看到$ http ajax從控制器發出的請求只發生一次,所以我很困惑。
如果您還沒有嘗試過,請檢查AngularJS Batarang Chrome擴展程序進行故障排除(https://github.com/angular/angularjs-batarang),以防嵌套作用域引起混淆。 – Gloopy 2012-07-21 14:35:46