按查看帖子链接(导航到 posts.postview
状态)时出现以下错误在我的Angular,ui-router& Firebase应用:
Error: Firebase.child failed: First argument was an invalid path: "undefined". Paths must be non-empty strings and can't contain ".", "#", "$", "[", or "]"
在应用程序的主页上,我有4个帖子的列表。来自这些帖子的数据来自Firebase。每个帖子都有一个指向帖子页面的链接,通过 View Post 链接,如以下屏幕截图所示:
当我点击查看帖子链接时,我看到帖子页面加载但我会收到上述Firebase错误,而Firebase数据不会填充模板(postview.tpl.html) ,如下面的屏幕截图所示:
我在Plunker
中运行了此应用程序的最新版本http://plnkr.co/edit/bGqFZ2VI7OSrO0myDjkq?p=preview
此外,这里是与获取帖子数据相关的控制器和服务文件:
postview.ctrl.js
app.controller('PostViewCtrl', function ($scope, $routeParams, Post, Auth) {
$scope.post = Post.get($routeParams.postId);
$scope.comments = Post.comments($routeParams.postId);
$scope.user = Auth.user;
$scope.signedIn = Auth.signedIn;
});
post.serv.js
app.factory('Post', function ($firebase, FIREBASE_URL) {
var ref = new Firebase(FIREBASE_URL);
var posts = $firebase(ref.child('posts')).$asArray();
var Post = {
all: posts,
get: function (postId) {
return $firebase(ref.child('posts').child(postId)).$asObject();
}
};
return Post;
});
关于这里有什么问题的任何想法?
答案 0 :(得分:0)
我通过postview.ctrl.js中的routeParams
更改为stateParams
来获取单个帖子页面,以使用来自Firebase的正确数据填充模板,因为这是ui-router需要运行的功能。有关stateParams的更多信息,请访问https://github.com/angular-ui/ui-router/wiki/URL-Routing#stateparams-service
工作postview.ctrl.js
app.controller('PostViewCtrl', function ($scope, $stateParams, Post, Auth) {
$scope.post = Post.get($stateParams.postId);
$scope.comments = Post.comments($stateParams.postId);
$scope.user = Auth.user;
$scope.signedIn = Auth.signedIn;
});
工作的Plunker: