大家好!
请原谅我的英语不好,请问我,我会尝试解释更多。
我正在学习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);
});
答案 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人员更新了他们的教程。我希望他们能很快做到。