在我的Angular 1.5應用程序(SPA)中,我在應用程序的每個「頁面」上使用用戶配置文件信息。所以,在我的app.js文件,我包括下面的代碼:
$http.get(API_URL + "/user")
.then(function success(response){
$rootScope.userInfo = response.data;
},
function error(response){
});
然後在每個組件的控制器和模板,我參考這個對象如下所示:
<img class="profile icon" ng-src="{{$rootScope.userInfo.profile_photo}}">
然而,圖像從不出現。我假設,因爲回調設置的響應中的$ rootScope.userInfo在模板加載後調用。如何確保GET響應中的響應來自它?
編輯 - 下面是更多信息,因爲有關「在視圖中不使用$ rootScope」的答案不適用於我。建議的更改不起作用。在這種情況下,我需要引用$ ctrl嗎?
angular.module('xxx')
.component("navBar", {
templateUrl: "/components/navBar/navBar.html",
controller: NavBarController,
bindings: {
}
});
function NavBarController($rootScope, $scope, $uibModal, $timeout, $http, API_URL) {
var vm = this;
我相信你不必在'$ rootScope'前加上路徑,即試試'ng-src =「{{userInfo.profile_photo}}」'。 –
範圍***總是***在組件中隔離。請參閱https://docs.angularjs.org/guide/component#!/。因此,組件不會繼承或訪問'$ rootScope'。無論如何,使用'$ rootScope'被許多人認爲是反模式;建議使用服務來存儲持久數據,並要求在與組件結合使用服務時使用服務。雖然你*可能*能夠使用'$ root'來解決這個限制,這不是推薦的行爲。 – Claies