Web Demo Mobile Demo Angular Demo Vue Demo React Demo
源代码
import { Component } from '@angular/core';
import { DataService } from './data.service';

@Component({
	selector: 'app-root',
	template: `
		<h2>Virtual Scroll - Lazy Load</h2>
		<p>The Virtual Scroll allows the ComboBox to display millions of items.</p>
		<eui-combobox valueField="id" textField="name"
				[virtualScroll]="true"
				[lazy]="true"
				[data]="data" 
				[total]="total" 
				[pageNumber]="pageNumber"
				[pageSize]="pageSize" 
				[rowHeight]="rowHeight"
				(filterChange)="onFilterChange($event)"></eui-combobox>
	`,
	providers: [DataService]
})
export class AppComponent {
	data: any[] = [];
	total: number = 0;
	pageNumber: number = 1;
	pageSize: number = 20;
	rowHeight: number = 30;

	constructor(public dataService: DataService){}

	onFilterChange(event){
		this.dataService.getData(event.filterValue, event.pageNumber, event.pageSize).subscribe((data) => {
			this.total = data.total;
			this.pageNumber = data.pageNumber;
			this.data = data.rows;
		});
	}
}
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { BrowserModule } from '@angular/platform-browser';
import { HttpModule } from '@angular/http';
import { EasyUIModule } from 'easyui/easyui/easyui.module';


import { AppComponent }   from './app.component';

@NgModule({
  bootstrap: [
    AppComponent
  ],
  declarations: [
    AppComponent
  ],
  imports: [
    FormsModule,
    BrowserModule,
    HttpModule,
    EasyUIModule
  ]
})
export class AppModule { }

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/observable/of';

@Injectable()
export class DataService {
	dataSource = [];

	constructor() {
		for(let i=1; i<=10000; i++){
			this.dataSource.push({
				id: 'Id'+i,
				name: 'Item'+i
			});
		}
	}

	getData(term: string, pageNumber: number, pageSize: number) {
		term = (term || '').trim();
		let data = this.dataSource.filter(row => row.name.toLowerCase().indexOf(term.toLowerCase()) != -1);
		let start = (pageNumber - 1) * pageSize;
		let rows = data.slice(start, start + pageSize);
		return Observable.of({
			total: data.length,
			pageNumber: pageNumber,
			pageSize: pageSize,
			rows: rows
		});
	}
}
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';

enableProdMode();

platformBrowserDynamic().bootstrapModule(AppModule);