具有Firebase自动生成的子键的Ionic Master Detail视图返回JSON $ value null

时间:2016-10-10 09:50:39

标签: ionic-framework firebase firebase-realtime-database master-detail

我是Ionic和Firebase的新手。在获取详细信息视图的数据时,我得到$scope.program的未定义值。

但是,我已在Master视图中获取完整的程序列表。单击主视图中的列表项会返回控制台日志中列表的索引(0,1,2等),但不会返回子键(我期望的那样)

在我的研究过程中,我发现这question与我的问题非常相关,Wes Haq。但是在实施相同的过程中,结果没有变化。请帮忙。

根据Wes Haq的上述问题,我无法找到州提供商的详细信息。我可能在那里遗漏了一些东西。在此先感谢所有人。

controllers.js

 
    
    .controller('myServicesCtrl', ['$scope', '$state',     '$stateParams',      '$ionicActionSheet', 'AgencyProgService', 
      function ($scope, $state, $stateParams, $ionicActionSheet,    AgencyProgService) {
             //Only items relative to the logged/signed in Agency shall be     pushed to the scope.items
              $scope.programs = AgencyProgService.getPrograms();
       }])


    .controller('serviceDetailCtrl', ['$scope', '$stateParams', 'AgencyProgService', 
     function ($scope, $stateParams, AgencyProgService) {
     AgencyProgService.getProgram($stateParams.index).then(function     (program) {
                 $scope.program = program;
             });
             console.log("serviceDetailCtrl: scope.program is: " +         $scope.program);
        }])
    
    

service.js

 

    .service('AgencyProgService', ['$q', '$firebaseArray',     '$firebaseObject', 'AgencyDataService', function ($q, $firebaseArray,     $firebaseObject, AgencyDataService) {
        var ref = firebase.database().ref().child('programs/'); // this is     a valid ref with https://my-demo.firebaseio.com/programs
       var agencyIDfromPrograms = AgencyDataService.getAgencyUID();
       var refFilter =    ref.orderByChild("agencyID").equalTo(agencyIDfromPrograms);
       return {
          getPrograms: function () {
           return $firebaseArray(refFilter);
         },

          getProgram: function (programId) {
          console.log("getProgram: ID is: " + programId + "And refFilter to     use is: " + ref);

            var deferred = $q.defer();
            var programRef = ref.child(programId); // here programId should     be the autogenerated child key from fire DB "programs"
            var program = $firebaseObject(programRef);
            deferred.resolve(program);
            return deferred.promise;
            }
        }
      }])

查看: myServices.html

    <ion-list id="myServices-list9">
            <ion-item id="myServices-list-item11" 
                ng-repeat="item in programs" ui-    sref="serviceDetail({index: $index})">
                <div class="item-thumbnail-left">
                    <i class="icon"></i>
                    <h2>{{item.progName}} </h2>
                    <p>{{item.servType}} for: {{item.servHours}}</p>
                    <p>From: {{item.servStartDate}}</p>
                </div>
            </ion-item>
</ion-list>

serviceDetail.html

<div class="list card">
        <div class="item item-avatar">
            <img src="{{item.user.picture.thumbnail}} " />
            <h1>{{program.servContact}}</h1>
            <h2>{{program.$id}} {{program.progName}}</h2>
            <p>{{item.servContact}} {{item.servStartDate}}</p>

</div>
<pre> {{program | json}} </pre>

从serviceDetail视图中,program中没有数据可见,您可以从下面的屏幕截图中看到。 serviceDetail的名单卡。点击myServices上的第二项时,会显示此详细信息屏幕$id1。预期是计划的儿童关键:

2

儿童计划的Firebase数据结构截图如下,

child from programs DB on Firebase

感谢您的建议。

0 个答案:

没有答案