私はhtmlのfirebaseからデータを取得して表示する機能を実行するボタンを持っています(私はangularJS、ionic、firebaseを使用しています)。は正常に機能していることを約束しています
問題は次のとおりです。私の後に.then(function(){})をインクルードしないと、プロミスは非同期で実行されます。つまり、データが表示されるようにもう一度ボタンをクリックする必要があります。 html。
私は約束の後に(firebaseからデータを取得する)スコープにデータを入れたいと思っていますが、何らかの理由で、後に.then関数を置くと動作するだけです。
しかし、データはコンソールでは正常に表示されますが、htmlでは表示されません(つまり、関数がスコープに接続されていないと思われます)。
$scope.displayChat = function() {
var userId = firebase.auth().currentUser.uid; // Get ID
var deferred = $q.defer()
var db = firebase.database();
var ref = db.ref("12346787");
ref.on("value", function(snapshot) {
console.log(snapshot.val());
$scope.chatArray = snapshot.val();
deferred.resolve()
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
})
return deferred.promise.then(function(){
// Removing this empty .then(function(){}) function
// will result in asynchronousity.
// just "return deferred.promise;" doesn't work.
})
}
どれソリューション:ここ
は、コードの一部はありますか?私は約束の経験はあまりありませんが、関連するものは何も見つかりませんでした。乾杯。
なぜ約束が必要ですか?あなたは何かを解決するメモです。 ** deferred.resolve()** - >は値を解決しません。 – Hosar