使用Firebase更新$ scope

巴塞尔

我收到Firebase的响应后正在尝试更新范围(我在应用程序控件部分中进行了响应),这是示例代码。PS我正在使用AngularFire,Firebase和Angularjs谢谢

var app = angular.module("sampleApp", ["firebase"]);

  firebase.initializeApp(config);
  app.factory("mealMacros", ["$firebaseArray",
  function($firebaseArray) {
  var dbRef = firebase.database();
  var userId = sessionStorage.uid;
  var ordersRef = firebase.database().ref('user_info/' + userId + '/orders');
         return $firebaseArray(ordersRef);



  }
]);

app.controller("MealCtrl", ["$scope", "mealMacros",
  function($scope, mealMacros) {
  //  $scope.user = "Guest " + Math.round(Math.random() * 100);
//tried mealMacros.on.. didnt work 
  ordersRef.on('value', function(snapshot) {
                var orders = snapshot.val();

                // Loop and parse order ids here
                for (var key in orders) {
                        var orderId = orders[key]['orderType'];
                       console.log(orderId);
                         $scope.products = orderId;
                    //code not reaching here 
                }

        });

  }
]);
c
  ordersRef.on('value', function(snapshot) {
     var orders = snapshot.val();
    // Loop and parse order ids here
    for (var key in orders) {
       var orderId = orders[key]['orderType'];
       console.log(orderId);
       $scope.products = orderId;
      //code not reaching here 
    }
  });

首先,您需要确保输入数据 var orders

然后,$scope.products = orderId;您可以在循环中设置相同的变量。也许$scope.products是一个数组,您想在其中推送数据吗?$scope.products.push(orderId);

最后,$scope在.on事件中设置变量,您需要$scope.$apply()在函数返回之前进行调用

  ordersRef.on('value', function(snapshot) {
    var orders = snapshot.val();
    console.log(orders); // make sure there's an array here
    for (var key in orders) {
       var orderId = orders[key]['orderType'];
       $scope.products.push(orderId);
    }
    $scope.$apply();
  });

最后一件事,var orderId = orders[key]['orderType'];可能无法按预期工作,具体取决于var orders数组的结构

您可以尝试var orderId = key.orderType;是否不起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章