簡體   English   中英

如何使用新的API在AngularFire中創建顯示控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM