3
我有一個服務的創建功能,它負責輸入數據,將其轉換爲資源,執行保存並將其插入本地緩存中。AngularJS array.push ng:重複不更新
create = (data, success, error) ->
throw new Error("Unable to create new user, no company id exists") unless $resource_companies.id()
# create the resource
new_model = new resource(data)
# manually add the company id into the payload (TODO: company id should be inferred from the URL)
new_model.company_id = $resource_companies.id()
# do the save and callbacks
new_model.$save(() ->
list.push(new_model)
success.call(@) if success?
, error)
我的問題是,一個ng:重複觀看列表變量沒有得到更新。據我所知,這不是在AngularJS之外發生的,所以它不需要$ scope。$ apply()來保持它是最新的(事實上,如果我嘗試觸發一個摘要,我會得到一個摘要已經在進行中錯誤)
什麼是非常奇怪的是,我有這個完全相同的模式在別處沒有問題。
使用我的控制器訪問列表數組的代碼是(這是在服務)
# refreshes the users in the system
refresh = (cb) -> list = resource.query(() -> cb.call(@) if cb?)
在控制器:
$scope.users = $resource_users.refresh()
我對此加了一些調試。在array.push發生後,我可以看到摘要被調用,但在應該指向數組引用的$ scope.users中,仍然報告數組中的舊項。 這就像不知何故數組引用沒有正確傳遞。 – Samuel
$ scope.users指向數組中的引用嗎?怎麼會這樣? – Sharondio
$ scope.users通過刷新函數指向服務中的數組變量「list」。列表在服務範圍內,以便刷新和創建方法都可以達到它。 – Samuel