2016-05-26 53 views
0

我遇到綁定不更新的情況,我想我理解它爲什麼會發生,但我不確定如何解決它。AngularJS - 當初始值爲null時綁定在更新後不會更新

在我的控制器中,我有一個company對象,它有一個屬性user,它可能包含或不包含用戶。該用戶是另一個對象。

這隻發生在我沒有公司用戶的情況下。當我在我的模板上顯示用戶名時,我會執行{{ companyCtrl.company.user.name || 'N/A' }}。所以它將顯示N/A,因爲沒有用戶。然後我會分配一個用戶,並在響應中更新company.user,以便它不再爲空。

但是,在我的模板中,它仍顯示N/A。我假設這是因爲最初沒有用戶,沒有約束力?

但我不積極。如果我在加載頁面時已經有用戶,並且只是更改了用戶,則該名稱將在模板中更新。

+0

您可以創建[Plunker](https://plnkr.co/)或[JsFiddle](http://jsfiddle.net/)以便我們複製該問題嗎? – Win

回答

0

我發現這個技巧很難解釋,但是 - 當您將companyCtrl.company.user分配給新對象時,模板中對companyCtrl.company.user.name的引用仍指向原始對象,即仍然爲空。如果您希望這樣做,您可以將companyCtrl.company.user的屬性分配給您希望分配給用戶的值,而不是整個對象。

+0

我想我知道你的意思,這是一個很好的觀點。我其實有一個處理更新的服務。如果該屬性存在,我會使用'angular.copy()'來解決更新問題。但是,我可能不得不看看我的代碼中的屬性爲null,因爲這可能不被考慮。 – kenshin9

+0

現在我想到了,您應該可以通過聲明companyCtrl.company.user = {}輕鬆解決此問題;在控制器的開始。 –

0

如果更新範圍值超出角度範圍(例如,在jQuery回調中),應該調用$scope.$apply()$scope.$digest()$scope.$evalAsync()來角度消化數據。

0

這是因爲摘要在模型更新之前運行。要強制摘要,可以將代碼放入$ timeout。

相關問題