大家好!
对不起,我的英语不好,请问我,我会尽力解释更多。
我正在学习关于http://thinkster.io我在第4课中注意到,它使用了angularfire的旧版本(我想小于2(,后者的语法也发生了变化。我已经尝试对v2的代码进行更改(例如,我添加了$asArray((元素来返回$firebase,$add和$remove开始工作。但是我的方法"find"没有,$keyAt返回null。我的假货在哪里?
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);
});
我也有同样的问题。
以及在post.js:中使用$getRecord
find: function (postId) {
return posts.$getRecord(postId);
并在posts.html 中使用{{post.$id}}
<a href="#/posts/{{ post.$id }}">comments</a>
让它工作得很好。尽管如此,我还是一个傻瓜,真的不明白为什么这真的有效。也许有人可以提供一些信息?此外,我找不到$getRecord文档。它不应该和$keyAt一起工作吗?
我在做http://thinkster.io辅导的我使用的是最新的angularfire 0.8.0和AngularJS v1.2.16。(由约曼安装(
$child在angularfire中消失0.8.0https://www.firebase.com/blog/2014-07-30-introducing-angularfire-08.html
在find方法中,应该使用$getRecord((;
find: function(postId){
return posts.$getRecord( postId );
},
此外,在views/posts.html中,我正在传递帖子&id,而不是postId。(虽然不确定这是正确的方法,但它有效(
<a href="#/posts/{{ post.$id }}">comments</a>
postId的行为似乎类似于$index。如果您在视图中控制台.log(postId(或{{postId}},您会注意到这一点。
遇到这些问题让我怀疑工厂是否有必要使用这个新的API。这似乎可以在控制器中完成。
我已经请智囊团的人更新他们的教程。我希望他们很快就会这么做。