如何使用URL参数从firebase获取完整对象

时间:2014-11-07 21:59:51

标签: angularjs firebase ionic-framework

我试图在离子应用中创建两个视图。但是当我从视图1转到带有URL参数的视图2时,我只从Firebase返回一个空对象,所以我的第二个视图没有显示任何内容。完全迷失在这里。

路由:

    .state('app.trials', {
    url: "/trials",
    views: {
      'menuContent' :{
        templateUrl: "templates/trials.html",
        controller: 'TrialsCtrl'
      }
    }
    })

  .state('app.trial', {
    url: "/trials/:trialId",
    views: {
      'menuContent' :{
        templateUrl: "templates/trial.html",
        controller: 'TrialCtrl'
      }
    }
    })

查看1:/试验 - 显示所有试验,这是有效的。

<ion-list>
<ion-item ng-repeat="(trialId, trial) in trials | orderBy:'title'" href="#/app/trials/{{trialId}}">
{{trial.title}} | {{trialId}}
</ion-item>
</ion-list>

视图1的工厂:

.factory('Trial', function ($firebase, FIREBASE_URL) {
var ref = new Firebase(FIREBASE_URL);
var trials = $firebase(ref.child('trials')).$asArray();

var Trial = {
all: trials,    
get: function (trialId) {
  return $firebase(ref.child('trials').child(trialId)).$asObject();
}
};

return Trial;
})

视图1的控制器(TrialsCtrl):

.controller('TrialsCtrl', function ($scope, Trial) {
  $scope.trials = Trial.all;
  console.log($scope.trials);
})

查看2:/试用 - 应显示已在/试验中选择的试用版。

<ion-content class="has-header">
    <h1>{{trial.title}}</h1>    
</ion-content>

视图2的控制器(TrialCtrl):

.controller('TrialCtrl', function($scope, $stateParams, Trial) {
  $scope.trial = Trial.get($stateParams.trialId);
  console.log($scope.trial);
})

视图2中控制台的结果:

{$$conf: Object, $id: "3", $priority: null, $save: function, $loaded: function…}$$conf:   Objectbinding: fdestroyFn: function d(a){n.isDestroyed=!0,i.off("value",k),h=null,m(a||"destroyed")}inst: clisteners: Array[0]promise: Object__proto__: Object$id: "3"$priority: null$value: null__proto__: Object

因此,此对象不包含$ stateParams.trialId ...

请求的试用对象中的所有项目

如何获取完整对象并在视图2中显示所选的试用信息?

1 个答案:

答案 0 :(得分:1)

发现问题:

在视图2 /试验中,我指的是{{trialId}},我应该提到{{trial。$ id}}。

改变它解决了它。