我是Angular的新手,我想在拖n放orderlist元素并改变顺序后得到元素的修改后的索引。不知道如何使用orderlist的onReorder事件。
有人能帮我吗?
image.component.html
<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
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上执行拖放操作后,我应该如何获得新序列?
发布于 2021-09-21 21:12:00
在我的例子中,我使用了onReorder事件,因为它通知列表何时被排序,然后我使用我传递给p-orderList的列表,因为它会根据用户设置的顺序自动更新它,这意味着您只需要遵循这个有序列表,而不需要任何当前或以前的索引,因为您已经对列表进行了排序。
例如,我有一个活动列表,它是一个具有name、Id和order属性的对象。我只需使用索引+1更新order属性来设置我的顺序,然后在我的后端更新此活动,然后当此列表返回到前端时,我确保按此order属性对此列表进行排序。
这就是我在HTML中实现的方法
<p-orderList
(onReorder)="onOrderActivity()"
styleClass="activity-order-list"
[value]="activities"
[dragdrop]="true">
<ng-template</ng-template>
</p-orderList>这就是我在ts文件中所做的,在本例中,活动在拖放之后获得正确的顺序。
onReorder() {
activities.forEach((a, index) => (a.Order = index + 1));
this.saveActivity(activity);
}排序方法
sortByActivityOrder(a,b):number{
a.Order - b.Order
}我希望它能帮助一些人,因为它是在几个月前发布的。
https://stackoverflow.com/questions/63071420
复制相似问题