我有關於AngularJS的問題。我想對某些數組進行ng-repeat。但是這個數組的數據是從控制器中的firebase獲得的。 問題是,當頁面呈現時,iam仍在等待從異步函數獲取來自firebase的數據。角度,停止渲染,直到獲取異步數據
什麼是控制它的最好方法? 我試着使用promisses,但是在我從firebase獲取數據之前,出現了一些錯誤和頁面。
即
$scope.games = [];
function getOnce(){
var defer = $q.defer();
ref.once("value", function(data) {
defer.resolve();
$scope.games.push('test');
});
return defer.promise;
}
$scope.getdata = getOnce().then(function(data){
console.log('success');
console.log(data);
});
我呼籲初始化 '$ scope.getdata' 功能 '數據-NG-的init = 「的GetData()」' 我錯在這裏?或者我怎樣才能實現我的目標?
這是異步/承諾是如何工作的。異步的關鍵在於在服務器請求正在進行時可能發生其他事情(如頁面呈現)。但是你在這裏發佈的代碼並不能真正顯示你的問題真的是什麼,因爲它似乎並沒有使用任何試圖獲得的數據。 – Claies
不應該使用'ng-init'來觸發控制器功能,請在控制器中調用它。另外'resolve'不會將任何數據傳遞給承諾鏈 – charlietfl
您的'getdata'屬性不是函數,它是一個承諾對象。 –