Post.delete(POST)功能的修订工作不ThinksterIO学习如何构建实时Web应用程序(W / AngularJS&安培;火力地堡)教程 [英] Post.delete(post) function not working in revised ThinksterIO Learn to Build Real-Time Web Apps (w/ AngularJS & Firebase) tutorial
问题描述
我已经和最近修订的 Thinkster.io沿着以下
AngularJS教程:学习如何构建实时网络应用但我得到周围的<一卡href=\"https://thinkster.io/angulartutorial/learn-to-build-realtime-webapps/#error-handling-for-the-authentication-forms-7\"相对=nofollow> 80%大关专门与code删除帖子。出于某种原因,我不能删除我已经创建的任何帖子下面的删除功能可按本教程提供。
删除:功能(POST){
如果(User.signedIn()){
变种用户= User.getCurrent();
如果(user.username === post.owner){
帖子。$删除(后)。然后(函数(){
。User.posts(user.username)$删除(后的$ id);
});
}
}
}
当我在if块之后跑
的console.log(岗位);
我得到的字符串
-JWZaIrYaPYNls95jQAw
所以自后
是一个字符串下面3条线永远无法工作。
如果(user.username === post.owner){
帖子。$删除(后)。然后(函数(){
。User.posts(user.username)$删除(后的$ id);
如果后
是一个对象,他们只能工作。关于如何得到这个删除功能的工作任何想法?
文件
user.js的工厂
使用严格的;app.factory(用户,函数($火力点,FIREBASE_URL,$ rootScope,$日志){
VAR REF =新的火力地堡(FIREBASE_URL +'用户');
VAR用户= $火力点(REF); 功能setCurrentUser(用户名){
$ rootScope.currentUser = User.findByUsername(用户名);
} $ rootScope在$('$ firebaseSimpleLogin:登录',函数(事件,AUTHUSER){
VAR的查询= $火力(ref.startAt(authUser.uid)
.endAt(authUser.uid))$ asArray()。 查询$加载(函数(){
setCurrentUser(查询[0] .username);
}); }); $ rootScope在$('$ firebaseSimpleLogin:注销',函数(){
删除$ rootScope.currentUser;
}); VAR USER = {
创建:功能(AUTHUSER,用户名){
VAR用户= $火力(ref.child(用户名))$ asObject()。 返回用户。$加载(函数(){
user.username =用户名;
/ * jshint驼峰:假* /
user.md5_hash = authUser.md5_hash;
。用户$ =优先authUser.uid;
。用户节省$();
}); $ log.debug(用户);
},
findByUsername:功能(用户名){
如果(用户名){
返回$火力(ref.child(用户名))$ asObject()。
}
},
getCurrent:功能(){
返回$ rootScope.currentUser;
},
signedIn:功能(){
!$回报== rootScope.currentUser不确定的;
},
帖子:功能(用户名){
返回$火力点(新火力地堡(FIREBASE_URL +'user_posts /+用户名));
}
}; 返回用户;
});
post.js 工厂
使用严格的;app.factory('邮政',函数($火力点,FIREBASE_URL,用户){
VAR REF =新的火力地堡(FIREBASE_URL +'职位');
VAR帖= $火力点(REF)$ asArray()。 VAR邮政= {
所有:帖子,
创建:函数(后){
如果(User.signedIn()){
变种用户= User.getCurrent();
post.owner = user.username; 返回岗位。$添加(后)。然后(功能(REF){
变种帖子ID = ref.name(); User.posts(user.username)$集(帖子ID,帖子ID)。 返回帖子ID;
});
}
},
发现:函数(帖子ID){
返回$火力(ref.child(帖子ID))$ asObject()。
},
删除:功能(POST){
如果(User.signedIn()){
变种用户= User.getCurrent();
如果(user.username === post.owner){
帖子。$删除(后)。然后(函数(){
。User.posts(user.username)$删除(后的$ id);
});
}
}
}
}; 返回帖子;});
posts.js 控制器
使用严格的;app.controller('PostsCtrl',函数($范围,$位置,邮政){ $ scope.posts = Post.all; $ scope.post = {URL:HTTP://,标题:''}; $ scope.deletePost =功能(POST){
Post.delete(岗位);
};});
posts.html 查看
&LT; DIV CLASS =集装箱帖页&GT; &LT; DIV CLASS =后排NG重复=(帖子ID,后)的帖子&GT;
&LT; DIV CLASS =COL-XS-1&GT; &LT; / DIV&GT;
&LT; DIV CLASS =COL-MD-9 COL-XS-11&GT; &LT; DIV CLASS =信息&GT;
&所述; A HREF ={{post.url}}&GT;
{{post.title}}
&LT;跨度类=URL&GT;({{post.url | hostnameFromUrl}})LT; / SPAN&GT;
&所述; / A&GT;
&LT; / DIV&GT;
&LT; DIV&GT;
&LT;跨度&GT; {{post.score || 0}}票&LT; / SPAN&GT;
&安培; MDASH;
&LT;跨度&GT;由...所提交
&所述; A HREF =#/用户/ {{post.owner}}&GT; {{post.owner}}&下; / A&GT;
&LT; / SPAN&GT;
&安培; MDASH;
&LT; A HREF =#/职位/ {{$后ID}}&GT;意见&LT; / A&GT;
&LT;一个NG点击=deletePost(后的$ id)。
NG-秀=signedIn()及和放大器; post.owner === currentUser.username&GT;删除&LT; / A&GT;
&LT; / DIV&GT;
&LT; / DIV&GT;
&LT; DIV CLASS =COL-MD-2&GT; &LT; / DIV&GT; &LT; / DIV&GT;&LT; / DIV&GT;
看看这个:
&LT;一个NG点击=deletePost(后$ ID)...&GT;删除&LT; / A&GT;
您puttiing在它的一个职位。$ ID,您需要使用对象后。像这样的:
&LT;一个NG点击=deletePost(岗位)..&GT;删除&LT; / A&GT;
我还没有尝试过更新的教程呢,谢谢你的抬起头
I've been following along with the recently revised Thinkster.io AngularJS Tutorial: Learn to Build Real-Time Web Apps but I get stuck around the 80% mark specifically with the code to delete a post. For some reason I can not delete any posts I've created with the following delete funciton the tutorial provides.
delete: function (post) {
if (User.signedIn()){
var user = User.getCurrent();
if (user.username === post.owner) {
posts.$remove(post).then(function () {
User.posts(user.username).$remove(post.$id);
});
}
}
}
When I ran after in the if block
console.log(post);
I got the string
-JWZaIrYaPYNls95jQAw
so since post
is a string the following 3 lines could never work
if (user.username === post.owner) {
posts.$remove(post).then(function () {
User.posts(user.username).$remove(post.$id);
They could only work if post
was an object. Any ideas on how to get this delete function working?
FILES
user.js factory
'use strict';
app.factory('User', function ($firebase, FIREBASE_URL, $rootScope, $log) {
var ref = new Firebase(FIREBASE_URL + 'users');
var users = $firebase(ref);
function setCurrentUser(username) {
$rootScope.currentUser = User.findByUsername(username);
}
$rootScope.$on('$firebaseSimpleLogin:login', function (event, authUser) {
var query = $firebase(ref.startAt(authUser.uid)
.endAt(authUser.uid)).$asArray();
query.$loaded(function () {
setCurrentUser(query[0].username);
});
});
$rootScope.$on('$firebaseSimpleLogin:logout', function() {
delete $rootScope.currentUser;
});
var User = {
create: function (authUser, username) {
var user = $firebase(ref.child(username)).$asObject();
return user.$loaded(function() {
user.username = username;
/*jshint camelcase: false */
user.md5_hash = authUser.md5_hash;
user.$priority = authUser.uid;
user.$save();
});
$log.debug(users);
},
findByUsername: function (username) {
if (username) {
return $firebase(ref.child(username)).$asObject();
}
},
getCurrent: function () {
return $rootScope.currentUser;
},
signedIn: function () {
return $rootScope.currentUser !== undefined;
},
posts: function(username) {
return $firebase(new Firebase(FIREBASE_URL + 'user_posts/' + username));
}
};
return User;
});
post.js factory
'use strict';
app.factory('Post', function($firebase, FIREBASE_URL, User){
var ref = new Firebase(FIREBASE_URL + 'posts');
var posts = $firebase(ref).$asArray();
var Post = {
all: posts,
create: function(post) {
if(User.signedIn()) {
var user = User.getCurrent();
post.owner = user.username;
return posts.$add(post).then(function(ref) {
var postId = ref.name();
User.posts(user.username).$set(postId, postId);
return postId;
});
}
},
find: function(postId) {
return $firebase(ref.child(postId)).$asObject();
},
delete: function (post) {
if (User.signedIn()){
var user = User.getCurrent();
if (user.username === post.owner) {
posts.$remove(post).then(function () {
User.posts(user.username).$remove(post.$id);
});
}
}
}
};
return Post;
});
posts.js controller
'use strict';
app.controller('PostsCtrl', function($scope, $location, Post) {
$scope.posts = Post.all;
$scope.post = {url: 'http://', title: ''};
$scope.deletePost = function(post) {
Post.delete(post);
};
});
posts.html view
<div class="container posts-page">
<div class="post row" ng-repeat="(postId, post) in posts">
<div class="col-xs-1">
</div>
<div class="col-md-9 col-xs-11">
<div class="info">
<a href="{{ post.url }}">
{{ post.title }}
<span class="url">({{post.url | hostnameFromUrl}})</span>
</a>
</div>
<div>
<span>{{ post.score || 0 }} votes</span>
—
<span> submitted by
<a href="#/user/{{post.owner}}" >{{ post.owner }}</a>
</span>
—
<a href="#/posts/{{ post.$id }}">comments</a>
<a ng-click="deletePost(post.$id)"
ng-show="signedIn() && post.owner === currentUser.username">delete</a>
</div>
</div>
<div class="col-md-2">
</div>
</div>
</div>
Look at this:
<a ng-click="deletePost(post.$id)" ...>delete</a>
You are puttiing an post.$id in it, you need to use the object post. Like this:
<a ng-click="deletePost(post)" ..>delete</a>
I haven't tried out the updated tutorial yet, thanks for the heads up
这篇关于Post.delete(POST)功能的修订工作不ThinksterIO学习如何构建实时Web应用程序(W / AngularJS&安培;火力地堡)教程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!