首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我们在Primeng orderlist中使用drag n drop对元素重新排序,如何获得新的修改后的索引

如果我们在Primeng orderlist中使用drag n drop对元素重新排序,如何获得新的修改后的索引
EN

Stack Overflow用户
提问于 2020-07-24 18:06:57
回答 1查看 376关注 0票数 0

我是Angular的新手,我想在拖n放orderlist元素并改变顺序后得到元素的修改后的索引。不知道如何使用orderlist的onReorder事件。

有人能帮我吗?

image.component.html

代码语言:javascript
复制
<div class=image>
<app-header></app-header>
<p-orderList [value]="thumbnail" header="Hotel View" [listStyle]="{'height':'400px'}" filterBy="tag"
 filterPlaceholder="Filter by Tag" dragdrop="true" onReorder="onReorderNodes($event)">
    <ng-template let-thumbnail pTemplate="item">
        <div class="ui-helper-clearfix">
            <img [src]="'data:image/jpg;base64,'+thumbnail.image |secure| async" width="100">
            <div  style="font-size:20px;float:right;margin:15px 5px 0 0">
                <b>Tag</b>-Tag1,tag2,tag....
                <b>Year</b>-2010
            </div>
        </div>
        {{$event}}
    </ng-template>
</p-orderList>
</div>

image.component.ts

代码语言:javascript
复制
import { Component, OnInit, Input } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Router, ActivatedRoute } from '@angular/router';
import { NgxSpinnerService } from "ngx-spinner"; 
@Component({
  selector: 'app-image',
  templateUrl: './image.component.html',
  styleUrls: ['./image.component.css']
})   

export class ImageComponent implements OnInit {


  thumbnail: any;
  
  constructor(private http: HttpClient, private activatedRoute: ActivatedRoute,
    private SpinnerService: NgxSpinnerService) { }

  ngOnInit(): void {
    let imgAssetId = this.activatedRoute.snapshot.paramMap.get('assetId');
    if (imgAssetId != null) {
      this.getHotelAllImages(imgAssetId);
    }
    else {
      alert("No images present for asset " + imgAssetId)
    }
  }

  getHotelAllImages(assetId: string) {
    this.SpinnerService.show();  
    console.log("Asset ID: " + assetId)
    this.http.get<any>(this.url2 + Number(assetId))
      .subscribe(data => {
        this.thumbnail = data;
        this.SpinnerService.hide(); 
        if (this.thumbnail == null) {
          alert("No images present for Asset Id:" + assetId);
        }
        console.log("output " + this.thumbnail)
      })
  }    
}

在orderlist上执行拖放操作后,我应该如何获得新序列?

EN

回答 1

Stack Overflow用户

发布于 2021-09-21 21:12:00

在我的例子中,我使用了onReorder事件,因为它通知列表何时被排序,然后我使用我传递给p-orderList的列表,因为它会根据用户设置的顺序自动更新它,这意味着您只需要遵循这个有序列表,而不需要任何当前或以前的索引,因为您已经对列表进行了排序。

例如,我有一个活动列表,它是一个具有name、Id和order属性的对象。我只需使用索引+1更新order属性来设置我的顺序,然后在我的后端更新此活动,然后当此列表返回到前端时,我确保按此order属性对此列表进行排序。

这就是我在HTML中实现的方法

代码语言:javascript
复制
  <p-orderList
         (onReorder)="onOrderActivity()"
         styleClass="activity-order-list"
         [value]="activities"
         [dragdrop]="true">
      <ng-template</ng-template>
  </p-orderList>

这就是我在ts文件中所做的,在本例中,活动在拖放之后获得正确的顺序。

代码语言:javascript
复制
 onReorder() {
    activities.forEach((a, index) => (a.Order = index + 1));
    this.saveActivity(activity);
  }

排序方法

代码语言:javascript
复制
  sortByActivityOrder(a,b):number{
    a.Order - b.Order 
   }

我希望它能帮助一些人,因为它是在几个月前发布的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63071420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档