错误:Firebase.child失败:第一个参数是无效路径:" undefined"

时间:2014-11-22 20:44:02

标签: angularjs firebase angularfire angular-ui-router

查看帖子链接(导航到 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 链接,如以下屏幕截图所示:

enter image description here

当我点击查看帖子链接时,我看到帖子页面加载但我会收到上述Firebase错误,而Firebase数据不会填充模板(postview.tpl.html) ,如下面的屏幕截图所示:

enter image description here

我在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;
});

关于这里有什么问题的任何想法?

1 个答案:

答案 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:

http://plnkr.co/edit/mnBYG1A1MEEv6gINRBbb?p=preview