Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ionic framework Firebase.once在页面不为';t第一次加载_Ionic Framework_Firebase_Angularfire - Fatal编程技术网

Ionic framework Firebase.once在页面不为';t第一次加载

Ionic framework Firebase.once在页面不为';t第一次加载,ionic-framework,firebase,angularfire,Ionic Framework,Firebase,Angularfire,我的Ionic应用程序上有一个视图,它只显示一个选择下拉菜单,然后提示用户键入一个数字。然后,数字将保存到miles对象中该特定用户的对象中,键为选定选项,值为键入的数字。以下是控制器和视图的代码 控制器: // Get who is logged in $scope.user = facebook.get(); // Array of airlines var airRef = ref.child("airlines"); $scope.airlines = $firebaseArray(ai

我的Ionic应用程序上有一个视图,它只显示一个选择下拉菜单,然后提示用户键入一个数字。然后,数字将保存到miles对象中该特定用户的对象中,键为选定选项,值为键入的数字。以下是控制器和视图的代码

控制器:

// Get who is logged in
$scope.user = facebook.get();
// Array of airlines
var airRef = ref.child("airlines");
$scope.airlines = $firebaseArray(airRef);
console.log($scope.airlines);
$scope.selectedAir = {};
$scope.miles = {};
// Add program to user
$scope.addProgram = function () {
  if(jQuery.isEmptyObject($scope.user)) {
      var authData = ref.getAuth();
      var theUser = ref.child("users").child(authData.uid);
      var selected = {};

      theUser.child("miles").child($scope.selectedAir.name.$id).once("value", function(snapshot) {
          console.log("apples");

          var exist = snapshot.exists();
          if(!exist) {
              selected[$scope.selectedAir.name.$id] = $scope.miles.num;
              theUser.child("miles").update(selected);
              $state.go("app.saved");
          } else {
              var alertPopup = $ionicPopup.alert({
                title: 'Oops!',
                template: "You already created this airline! Go to the 'Add Ticket' page to add more points."
              });
              alertPopup.then(function(res) {
                console.log("You already created this airline! Go to the 'Add Ticket' page to add more points.");
              });
          }
      })

  } else {
      var theUser = ref.child("users").child($scope.user.id);
      var selected = {};

      theUser.child("miles").child($scope.selectedAir.name.$id).once("value", function(snapshot) {
          var exist = snapshot.exists();
          if(!exist) {
              selected[$scope.selectedAir.name.$id] = $scope.miles.num;
              theUser.child("miles").update(selected);
              $state.go("app.saved");
          } else {
              var alertPopup = $ionicPopup.alert({
                title: 'Oops!',
                template: "You already created this airline! Go to the 'Add Ticket' page to add more points."
              });
              alertPopup.then(function(res) {
                console.log("You already created this airline! Go to the 'Add Ticket' page to add more points.");
              });
          }
      })

  }
}
视图:

我将得到一个控制台错误,告诉我它错了,所以我知道它正在尝试运行,但是当传入正确的子id时,什么也没有发生。没有回调,没有错误捕获。谢谢找到我的问题:


如果Firebase函数(如
ref.once('value',…)
ref.update(…)
不执行任何内部命令,也不抛出错误(错误回调中会捕获该错误),则您的应用程序很可能由于调用
Firebase.goOffline()
而未连接到Firebase。这是我的情况,我在另一个视图中调用了它,当我切换视图时,
Firebase.goOnline()
从未被调用以重新打开连接。

当您更改状态时,只需刷新此控制器。您可以使用
$state.go('login',{},{reload:true})$state.transitiono('login',{},{reload:true})刷新状态这是您面临的问题,因此当我这样做时,这部分工作正常:
$scope.airlines=$firebaseArray(airRef)但这仍然没有:
user.child(“miles”).child($scope.selectedAir.name.$id)。once(“value”,函数(快照){
我已经在Chrome开发者工具中测试过了,JS点击了
。once
函数,然后直接跳到结尾
}
没有抛出错误或执行任何内部命令。我解决了它。我发现只有在访问主视图时,回调才会运行。在Firebase函数结束时,我调用了
Firebase.goOffline()
以帮助保存并发连接。有一次我声明
Firebase.goOnline()
在AddProgram视图中运行我的函数之前,它工作正常。Firebase应该为此查看一些错误消息,感谢Hardik的帮助。
<ion-view view-title="Add a Program">
<ion-nav-buttons side="left">
<button class="button back-button buttons button-clear header-item" ng-click="goBack()">
  <i class="icon ion-ios-arrow-back"></i>
</button>
  </ion-nav-buttons>
<ion-content class="padding">
      <div class="list marginZeroA paddingTL width80">
          <p class="mainText"> </p>
          <div class="list">
              <label class="item item-input item-select">
                  <div class="input-label">

                  </div>
                  <select ng-model="selectedAir.name" ng-options="airline.$id for airline in airlines">

                </select>
            </label>
          </div>
          <label class="item item-input loginInputs">
              <input style="color:black"ng-model="miles.num" class="milesPoints" type="number" min="0" max="10000000"
                placeholder="30000" ng-click="revealInput(1)">
          </label>
          <button class="button button-outline button-calm loginButton
            saveTicket" ng-click="addProgram()" disabled> Add </button>
    </div>
 </ion-content>
 </ion-view>
.child($scope.selectedAir.name.$id).once("value",