4
我的應用程序需要一些基本數據才能啓動。這就是爲什麼我創建了一項服務,並將其用作普通數據的模型,以便它可以被所有控制器訪問。我正在嘗試使用ui-route的reslove功能解決該服務,該功能說如果我返回一個承諾,那麼它將在控制器的執行開始之前解決,但它不適用於我。這裏是我的代碼ui-route解析不起作用
服務:
var Data = function ($q, $http) {
var list = {};
var cachedData;
var resolveData;
resolveData = function() {
return $http.get('/api/data')
.then(function (response) {
var deferred = $q.defer();
deferred.resolve(list.setData(response.data));
return deferred.promise;
}, function (response) {
});
};
list.getData = function() {
if (cachedData) {
return cachedData;
}
else {
resolveData();
}
};
list.setData = function (data) {
cachedData = data;
return data;
};
return list;
};
Data.$inject = ['$q', '$http'];
路線:
.state('temp', {
url: 'temp',
templateUrl: '/temp',
controller: 'temp',
resolve: {
data: function (data) {
return data.getData();
}
}
})
控制器:
var temp = function(data, $scope){
console.log('asad');
$scope.showLoading = true;
$scope.prefixes = data.something; //not working
$scope.lists = data;
};
temp.$inject = ['data', '$scope'];
在resolveData功能沒有變化? – nextt1
是的,你這樣做,這就是爲什麼resolveData()返回一個承諾,而getData()不這樣做,我已經用getData()的例子編輯了我的答案。 請嘗試一下,看看它是否有幫助。 – kutomer
It Works ..謝謝你.. – nextt1