【问题标题】:ng-show/ng-hide value is not changing after getting the data from firebase?从 firebase 获取数据后,ng-show/ng-hide 值没有改变?
【发布时间】:2016-10-26 10:29:21
【问题描述】:

当我从 firebase 接收数据时,我正在用 false 更改 ng-show/ng-hide 值的范围。但它不会影响我认为的任何事情。 当我再次单击时,范围值正在改变,但我必须动态更新值。 请帮我找出这个问题。

提前致谢

这是我的代码

  <script>
         var app = angular.module("myApp", []);
         app.controller("redeemCtrl", function($scope) {
         $scope.showDiv = true;
       $scope.redeemSubmit = function() {
     firebase.database().ref().once('value', function(snapshot) {
         $scope.user = snapshot.val()
         console.log('Getting Data from fire base' + JSON.stringify($scope.user));
         $scope.showDiv = false;     
      });
    }
 });
</script>

查看

 <div ng-controller="redeemCtrl">
        <div ng-show="showDiv">
            <form>
                <div>
                    <input ng-model="Coupon" type="text">
                </div>

                <div class="row">
                    <button  ng-click="redeemSubmit()"  class="btn">Submit</button>
                </div>
            </form>
        </div>
        <div class="row" ng-hide="showDiv">
            <h3>{{user}}</h3>
        </div>
    </div>

【问题讨论】:

    标签: javascript angularjs firebase firebase-realtime-database


    【解决方案1】:

    请注意 Angular 发生了变化:

       console.log('Getting Data from fire base' + JSON.stringify($scope.user));
       $scope.showDiv = false;
       $scope.user = $scope.Coupon;
       $scope.$apply();
    

    【讨论】:

      【解决方案2】:

      对于自定义行为,最好使用 ngClick 而不是 ngSubmit

      【讨论】:

      • 点击并提交对我来说不是问题
      • setTimeout(function() { $scope.$apply(function(){$scope.showDiv = false;}); }, 1000);
      • 请尝试上述 sn-p(使用 setTimeout 将您的 $scope.showDive = false 包围)或尝试将您的范围变量作为字符串传递$scope.showDiv = "false"
      【解决方案3】:

      AngularJS 不知道 Firebase SDK 中发生的操作,它在其上下文之外,因此您应该通知 AngularJS 将您的代码包含在 $scope.$apply() 中的更改

      firebase.database().ref().once('value', function(snapshot) {
        $scope.$apply(function() {
          $scope.user = snapshot.val()
          console.log('Getting Data from fire base' + JSON.stringify($scope.user));
          $scope.showDiv = false;     
        });
      });

      【讨论】:

        猜你喜欢
        • 2014-12-08
        • 2014-03-27
        • 2016-09-11
        • 1970-01-01
        • 1970-01-01
        • 2015-01-30
        • 2015-02-12
        • 1970-01-01
        • 2016-02-17
        相关资源
        最近更新 更多