社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

类mysql的不喜欢按钮

Sivasankar chimata • 4 年前 • 264 次点击  

我正在为我的类似twitter的网站创建一个YouTube风格(比如dislike)的按钮。 但是我在实现like dislike buttons时遇到了问题,我使用的是Angular Node.js MYSQL,有NgFor循环和ngIf条件,我有两个表post{post{u id,user_id,description}和like{like_id,user_id,post_id,like_status}带有公共键user_id,post_id。

如果likes表中没有任何特定用户的值,我们如何编写条件来显示basic按钮

<div class="container" *ngFor="let post of posts; let i = index ">
   <h6> {{post.description}} </h6>
   <div class="row">          
     <div class="col-md-3">
       <div *ngFor="let like of likes; ">

         <div *ngIf="((post.user_id==like.user_id) && (post.post_id==like.post_id) && (like.like_status=='like'))">
                <button type="button" class="btn btn-success" (click)=likeSubmit(post.user_id,post.post_id)><i class="fa fa-thumbs-up"
                    aria-hidden="true"></i></button>
              </div>

         <div *ngIf="((post.user_id==like.user_id) && (post.post_id==like.post_id) && (like.like_status=='unlike'))">
                <button type="button" class="btn btn-warning" (click)=likeSubmit(post.user_id,post.post_id)><i class="fa fa-thumbs-up"
                    aria-hidden="true"></i></button>
              </div>

<!---problem with ngIf condition -->
       <div *ngIf="ngIf condition">
                <button type="button" class="btn btn-basic" (click)=likeSubmit(post.user_id,post.post_id)><i
                    class="fa fa-thumbs-up" aria-hidden="true"></i></button>
              </div>

前两个ngIf条件运行良好,但我无法为最后一个设置完美的ngIf内容,如果like_status==like,&like_status==like不像working good,如果like表中没有任何值,我们如何编写ngIf条件以显示按钮

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50968
 
264 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Amir Arbabian
Reply   •   1 楼
Amir Arbabian    5 年前

这样做有点不正确,不需要在模板中执行内部循环,只需在组件逻辑中执行两个表的连接,然后只需呈现所需的数据。尝试将方法添加到连接两个表的组件中,然后可以轻松地在模板中执行所需的操作。例子:

Ts文件

...
    public getPostsWithLikes() {
        this.posts.map(post => {
            const like = this.likes && this.likes.find(plike => post.user_id === plike.user_id && post.post_id === plike.post_id);
            return {post, like};
        });
    }
...

Html文件

<div class="container" *ngFor="let item of getPostsWithLikes(); let i = index ">
   <h6> {{item.post.description}} </h6>
   <div class="row">          
     <div class="col-md-3">
         <div *ngIf="item.like && item.like.like_status=='like'">
                <button type="button" class="btn btn-success" (click)=likeSubmit(item.post.user_id,item.post.post_id)><i class="fa fa-thumbs-up"
                    aria-hidden="true"></i></button>
              </div>

         <div *ngIf="item.like && item.like.like_status=='unlike'">
                <button type="button" class="btn btn-warning" (click)=likeSubmit(item.post.user_id,item.post.post_id)><i class="fa fa-thumbs-up"
                    aria-hidden="true"></i></button>
              </div>

<!---if you don't have related record in likes table, like would be null (false), so you just need to invert it-->
       <div *ngIf="!item.like">
                <button type="button" class="btn btn-basic" (click)=likeSubmit(item.post.user_id,item.post.post_id)><i
                    class="fa fa-thumbs-up" aria-hidden="true"></i></button>
              </div>

希望能有所帮助。