2014-07-01 95 views
0

我是一名角度新手,我被卡住了。我在jsbin.com上有一些代碼--->(http://jsbin.com/ratageza/7/edit?html,js,output無法讓Angularjs在更新模型時更新視圖

這不是很漂亮,但它顯示了我在做什麼。 在我的真實代碼中,我使用$ http.get調用RESTful後端從數據庫加載數據,並使用$ http.post調用來添加到數據庫。所有工作都很好,只要數據庫獲取並更新即可。但是當我使用「創建」表單創建一個新對象後,如果我點擊「全部列出」,我的錦標賽對象沒有更新。

我很困惑在$ http.post調用後是否需要$ apply?我嘗試過使用它,但是要麼使用它錯誤或那不是我的問題在這裏。我查看了周圍的整個計算器,似乎無法找到我的問題的答案。

如果有人能看到我做錯了什麼,我會非常感謝幫助。

謝謝!

回答

1

退房我在這裏做了細微的變化:http://jsbin.com/ratageza/8/edit?html,js,output

的變化是你如何定義你的控制器使用。您可以在兩個不同的地方使用TournamentController,它們實際上爲您提供了兩個獨立的範圍的控制器實例。您的列表所有視圖綁定到一個實例,而創建視圖綁定到完全不同的實例。

此外,您的問題$適用。作爲一般規則,你應該很少使用$ apply,並且你永遠不要在控制器中使用它,因爲在那裏使用它是不安全的。指令是使用$ apply的唯一安全的地方,即使只有在角度範圍之外修改數據的情況下才應該使用它。處理事物的順序,你發現如果你在控制器中使用$ scope。$ apply(),你經常會遇到關於已經處於摘要循環的異常。

0

http://jsbin.com/ratageza/10/edit這個工程。

這不是一個$ apply或$ diget問題。因爲您將TournamentController放入視圖的一部分。一個是創造,另一個是展現。這使$ scope.tournament的不同副本;

因此,我添加一個div來包裝窗體和表格。把控制器放在它上面。刪除窗體和表格控制器。

希望這可以解決您的問題。 :)