[英]How to create show controller in AngularFire with new API
自從幾天前切換API以來,我對Angle和Firebase還是陌生的。 我有一個coursesIndexController和一個coursesShowController,該索引有效,但是該顯示無效。 這是索引:
myApp.controller('CoursesIndexController',
function($scope, $firebaseObject, FIREBASE_URL) {
var ref = new Firebase(FIREBASE_URL+'/courses/');
$scope.courses = $firebaseObject(ref);
}
);
我的課程ShowController給了我很多問題。 我不確定如何提取特定條目。
myApp.controller('CoursesShowController',
function($scope, $firebaseObject, $firebaseArray, $routeParams, FIREBASE_URL) {
var ref = new Firebase(FIREBASE_URL+'/courses/');
var courses = $firebaseArray(ref);
var key = $routeParams.id.toString();
console.log(courses.get({shortName: key}));
}
);
我正在嘗試返回1個課程,其中shortName與地址欄中的鍵匹配。 $ routeParams.id.toString()返回該鍵的文本字符串就好了,但是當它嘗試拉開路線時,出現“未定義不是函數”錯誤。 對於它而言,每門課程的關鍵是一個時間戳,因此我要拉的“關鍵”在對象本身中。
我用以下html片段遍歷課程:
<div class="course" class="col-sm-6" ng-repeat="course in courses" >
<p><a ng-href="#/courses/{{course.shortName}}">{{course.name}}</a></p>
</div><!-- courses list -->
非常感謝你的幫助!
編輯:這是我在console.log上的課程firebaseArray的外觀:
EDITx2:我可以通過以下命令直接返回單個對象,但我仍然不知道如何通過對象中的shortName檢索它:
console.log($firebaseObject($scope.courses.$ref().child('-JWT5y43YFy1mGirVVS2')));
您是否嘗試過$getRecord()
而不是get()
? 在此處的AngularFire文檔中進行了說明 。 您的代碼對$getRecord()
更改如下:
myApp.controller('CoursesShowController',
function($scope, $firebaseObject, $firebaseArray, $routeParams, FIREBASE_URL) {
var ref = new Firebase(FIREBASE_URL+'/courses/');
var courses = $firebaseArray(ref);
var key = $routeParams.id.toString();
console.log(courses.$getRecord({shortName: key}));
}
);
嘗試枚舉數組,搜索正確的對象:
myApp.controller('CoursesShowController',
function($scope, $firebaseObject, $firebaseArray, $routeParams, FIREBASE_URL) {
var ref = new Firebase(FIREBASE_URL+'/courses/');
var courses = $firebaseArray(ref);
var key = $routeParams.id.toString();
var course;
for (var i = 0; i < courses.length; i++) {
if (courses[i].shortName === key) {
course = courses[i];
break;
}
}
console.log(course);
}
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.