【发布时间】:2015-04-15 13:28:41
【问题描述】:
我是 angular 和 firebase 的新手,自从几天前切换 API 以来一直遇到问题。我有一个课程索引控制器和一个课程显示控制器,索引有效,但节目无效。这是索引:
myApp.controller('CoursesIndexController',
function($scope, $firebaseObject, FIREBASE_URL) {
var ref = new Firebase(FIREBASE_URL+'/courses/');
$scope.courses = $firebaseObject(ref);
}
);
我的课程显示控制器给了我更多的问题。我不确定如何提取特定条目。
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 sn-p 循环浏览课程:
<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 -->
非常感谢您的帮助!
编辑:这是我的课程 firebaseArray 在我 console.log 时的样子:
EDITx2:我可以通过以下命令直接返回单个对象,但我仍然不知道如何通过对象中的 shortName 检索它:
console.log($firebaseObject($scope.courses.$ref().child('-JWT5y43YFy1mGirVVS2')));
【问题讨论】:
-
$firebaseObject 正在从服务器获取数据。在尝试读取它们之前,您必须等待值返回。一般来说,把它放在作用域中并在视图中使用它,停止尝试 console.log 异步值。
-
最好的做法是拉出 firebaseArray,然后通过它搜索与我的 routeParams 匹配的 shortName 或正确拉出正确的 firebaseObject?执行其中任何一项的代码是什么?谢谢,这很有帮助!
-
The guide 详细介绍了所有这些主题,包括入门部分中有关异步操作的部分。我会在那里挖。一般来说,如果您已经知道记录 ID,只需使用 $firebaseObject 获取它。
标签: javascript angularjs firebase