我试图在离子应用中创建两个视图。但是当我从视图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中显示所选的试用信息?
答案 0 :(得分:1)
发现问题:
在视图2 /试验中,我指的是{{trialId}},我应该提到{{trial。$ id}}。
改变它解决了它。