gpt4 book ai didi

javascript - Ng-if - 尝试获取我的 Firebase 的数据

转载 作者:行者123 更新时间:2023-11-30 12:09:36 26 4
gpt4 key购买 nike

我的 Firebase 中有一个数字,我想在我的 ng-if 中获取它。

我尝试了快照,我的控制台日志显示了很好的值(value),但它似乎被 ng-if 忽略了。

也许我错过了什么......

我的 Ng-If :

<div class="item" ng-if="distanceTo(event) < dist ">

我的JS:

userRef.child($scope.currentUser.authResponse.userID)
.child("settings")
.child("distance")
.once('value', function(snap) {

console.log(snap.val())
$scope.dist = snap.val()
console.log($scope.dist)

})

$scope.distanceTo = function(event) {
var distance = GreatCircle.distance(event.addressid.geometry.location.H,
position.longitude,
position.latitude,
event.addressid.geometry.location.L )
event.distance = distance
distance = distance.toFixed(1)
return distance
};
<div class="item" ng-if="distanceTo(event) < dist ">

最佳答案

问题是 Angular 不知道您的 Firebase 监听器何时更新。您有两个选择:使用 $timeout(不推荐),或使用 AngularFire(强烈推荐)。

使用 $timeout 你会做这样的事情:

.controller('MyCtrl', function($scope, $timeout) {
var ref = new Firebase('<my-firebase-app>');
// get the user
$scope.currentUser = ref.getUser();
var userRef = ref.child($scope.currentUser.uid).child("settings/distance");
userRef.on('value', function(snap) {
$timeout(function() {
$scope.dist = snap.val();
});
});
});

有了 AngularFire,这就简单多了:

angular.module('app', ['firebase']) // include AngularFire
.controller('MyCtrl', function($scope, $firebaseObject) {
var ref = new Firebase('<my-firebase-app>');
$scope.dist = $firebaseObject(ref);
});

Check out the AngularFire quickstart启动并运行并为自己节省大量时间和痛苦:)

关于javascript - Ng-if - 尝试获取我的 Firebase 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34187582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com