Mel*_*kor 8 dragula angular-dragula ng2-dragula angular
我有一个列表网格,我试图使用ng2-dragula拖动和交换网格的瓷砖
some.component.html
<md-grid-list rowHeight="200px" id = "cover" >
<md-grid-tile *ngFor="let werbedata of werbedaten"
[class.selected]="werbedata === selectedWerbedata"
[routerLink]="['/flyerdetail',werbedata.artnr]"
[style.background]="'lightblue'" class = "blocks"
[dragula]='"bag-one"'>
<md-list class="example-card">
<md-list-item>Produktname: {{ werbedata.werbetext }}</md-list-item>
<md-list-item>Euro: {{ werbedata.euro }}</md-list-item>
<h3 md-line> Artnr: {{ werbedata.artnr }} </h3>
<p md-line> Werbetext: {{ werbedata.werbetext }} </p>
</md-list>
</md-grid-tile>
</md-grid-list>
Run Code Online (Sandbox Code Playgroud)
some.component.ts
export class FlyerComponent implements OnInit {
werbedaten: WerbeData[];
selectedWerbedata: WerbeData;
constructor( private werbedatenService: WerbeDatenService ){};
...
...
}
Run Code Online (Sandbox Code Playgroud)
我的想法是在Drop事件上交换数据.是否有可以像这样添加到HTML的onDrop事件?
(onDrop) = "swap(data)"然后swap(data:any)在组件类中执行?
或者我必须初始化dragulaservice?是否有更好的交换方式?
我对于棱角分明的我是个新人,我发现这个非常难以跟随.任何提示将不胜感激?
对于从一个列表到另一个列表的简单拖动,ng2-dragula您不需要对任何事件进行操作,指令会为您处理该操作。似乎不支持从一个列表切换到另一个列表,但我提供了一个简单的 setyp,希望这将帮助您上路。
首先,确保它app.module.ts正确包含在您的
import { DragulaModule } from 'ng2-dragula';
...
@NgModule({
declarations: [
AppComponent
],
imports: [
DragulaModule,
...
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
在您的组件中,您需要创建列表。您可能还需要包含来自node_modules/dragula/dist/dragula.css.
我已经为该drop事件添加了绑定,这正是您所好奇的。此场景只是将新列表打印到控制台并演示双向绑定。
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css', './dragula.min.css']
})
export class AppComponent {
list1: number[] = [1, 2, 3, 4];
list2: number[] = [5, 6, 7, 8];
constructor(private dragulaService: DragulaService) {
dragulaService.drop.subscribe((value) => {
this.onDrop(value.slice(1));
});
}
private onDrop(args) {
console.log(this.list1);
console.log(this.list2);
}
}
Run Code Online (Sandbox Code Playgroud)
在您的模板中,您需要添加提供双向数据绑定的dragula和指令。dragulaModel请注意,两个列表都有相同的“包”。
<ul [dragula]='"bag-one"' [dragulaModel]='list1'>
<li *ngFor="let item of list1">{{ item }}</li>
</ul>
<ul [dragula]='"bag-one"' [dragulaModel]='list2'>
<li *ngFor="let item of list2">{{ item }}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1374 次 |
| 最近记录: |