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

查看:123
本文介绍了Post.delete(POST)功能的修订工作不ThinksterIO学习如何构建实时Web应用程序(W / AngularJS&安培;火力地堡)教程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经和最近修订的 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; D​​IV CLASS =集装箱帖页&GT;  &LT; D​​IV CLASS =后排NG重复=(帖子ID,后)的帖子&GT;
    &LT; D​​IV CLASS =COL-XS-1&GT;    &LT; / DIV&GT;
    &LT; D​​IV CLASS =COL-MD-9 COL-XS-11&GT;      &LT; D​​IV CLASS =信息&GT;
        &所述; A HREF ={{post.url}}&GT;
          {{post.title}}
                    &LT;跨度类=URL&GT;({{post.url | hostnameFromUrl}})LT; / SPAN&GT;
        &所述; / A&GT;
      &LT; / DIV&GT;
      &LT; D​​IV&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; D​​IV 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>
        &mdash;
                <span> submitted by 
                   <a href="#/user/{{post.owner}}" >{{ post.owner }}</a>
                </span>
        &mdash;
        <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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆