在thinkster上的Angularfire

时间:2014-08-05 12:39:53

标签: javascript angularjs firebase angularfire

大家好!

请原谅我的英语不好,请问我,我会尝试解释更多。

我正在学习http://thinkster.io上的示例工作角度,我在第4课中注意到它使用旧版本的angularfire(我猜小于2),并且后者的语法被改变了。我试图在我的v2代码中进行更改(例如我添加了$ asArray()元素来返回$ firebase,$ add和$ remove开始工作。但是我的方法'find'没有,并且$ keyAt返回我的假在哪里?

post.js:

'use strict';

app.factory('Post', 
    function ($firebase, FIREBASE_URL) {
        var ref = new Firebase('https://torid-fire-6813.firebaseio.com/posts');

        var posts = $firebase(ref).$asArray();

        var Post = {
            all: posts,
            create: function (post) {
                return posts.$add(post);
            },
            find: function (postId) {
                return posts.$keyAt(postId);
            },
            delete: function (postId) {
                return posts.$remove(postId);
            }
        };

        return Post;
    }
);

和postview.js,其中使用方法'find':

'use strict';

app.controller('PostViewCtrl', function($scope, $routeParams, Post){
    $scope.post = Post.find($routeParams.postId);
});

2 个答案:

答案 0 :(得分:2)

我有同样的问题。

确实在post.js中使用$ getRecord:

find: function (postId) {
    return posts.$getRecord(postId);

并在posts.html中使用{{post。$ id}}

<a href="#/posts/{{ post.$id }}">comments</a>

让它工作得很好。虽然,我是一个相当的菜鸟,并且真的不明白为什么这实际上有效。也许有人可以提供一些信息?另外,我找不到$ getRecord文档。难道它不能使用$ keyAt吗?

答案 1 :(得分:1)

我在http://thinkster.io教程中遇到了同样的问题。我正在使用最新的angularfire 0.8.0和AngularJS v1.2.16。 (由Yeoman安装)

$ child在angularfire 0.8.0 https://www.firebase.com/blog/2014-07-30-introducing-angularfire-08.html

中消失了

在find方法中,您应该使用$ getRecord();

    find: function(postId){
        return posts.$getRecord( postId );
    },

另外,在views / posts.html中我传递了帖子。&amp; id,而不是postId。 (不确定它是正确的方法,但它有效)

<a href="#/posts/{{ post.$id }}">comments</a>

似乎postId的行为类似于$ index。如果您在视图中使用console.log(postId)或{{postId}},您会注意到这一点。

遇到这些问题让我想知道这个新API是否甚至需要工厂。它似乎可以在控制器中完成。

我已经让thinkster人员更新了他们的教程。我希望他们能很快做到。