如何在 Kendo Multiselect 中悬停时显示弹出窗口
How to show a popup on hover in Kendo Multiselect
我有一个 kendo 多选组件,效果很好,但是当下拉列表中的文本太长时,我必须将其截断。我至少会在悬停时显示一个带有全文的工具提示。这是所需结果的示例(在此示例中,我将鼠标悬停在第一个结果上,得到一个包含全文的弹出窗口):
这是我的实际 html:
<kendo-multiselect kendoMultiSelectSummaryTag
[data]="enData"
[(ngModel)]="allCo"
[ngModelOptions]="{standalone: true}"
(filterChange)="handleFilterEn($event)"
[filterable]="true"
textField="text"
[virtual]="virtual"
valueField="coId"
(valueChange)="onValueChange($event)"
[value]="selectedCoToFilter"
class="form-control">
</kendo-multiselect>
您可以使用模板完成您想要做的事情。使用模板,您可以自定义下拉项的显示方式、所选项目的显示方式等。因此,您可以添加任何 HTML 您想要的内容,包括长名称值的工具提示。
这是在 Kendo Angular
中自定义模板的一种方法示例
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
styles: ['.template { display: inline-block; background: #333; color: #fff; border-radius: 50%; width: 18px; height: 18px; text-align: center; } '],
template: `
<div class="example-config">
Current value: {{value | json}}
</div>
<div class="example-wrapper">
<p>T-shirt size:</p>
<kendo-multiselect
[data]="listItems"
[(ngModel)]="value"
[textField]="'text'"
[valueField]="'value'"
>
<ng-template kendoMultiSelectTagTemplate let-dataItem>
<span class="template">{{ dataItem.value }}</span> {{ dataItem.text }}
</ng-template>
</kendo-multiselect>
</div>
`
})
export class AppComponent {
public listItems: Array<{ text: string, value: number }> = [
{ text: 'Small', value: 1 },
{ text: 'Medium', value: 2 },
{ text: 'Large', value: 3 }
];
public value: any = [{ text: 'Medium', value: 2 }];
}
此处有多个示例和代码:
https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/templates/
一种 可能 的方法来使用模板完成您正在寻找的事情 - 我不精通 Angular,所以这可能需要一些调整。这是 StackBlitz 上此示例的 link:https://stackblitz.com/edit/angular-3c7ve2?file=app/app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
styles: ['.template { display: inline-block; background: #333; color: #fff; border-radius: 50%; width: 18px; height: 18px; text-align: center; } '],
template: `
<div class="example-config">
Current value: {{value | json}}
</div>
<div class="example-wrapper">
<p>T-shirt size:</p>
<kendo-multiselect
[data]="listItems"
[(ngModel)]='value'
[textField]="'text'"
[valueField]="'value'"
>
<ng-template kendoMultiSelectItemTemplate let-dataItem>
<div title="{{ dataItem.title }}">{{ dataItem.text }} </div>
</ng-template>
</kendo-multiselect>
</div>
`
})
export class AppComponent {
public listItems: Array<{ text: string, title: string, value: number }> = [
{ text: 'Small but really long ...', title: 'Small but really long text here and here and some more here but extra extra long long long', value: 1 },
{ text: 'Medium', title: 'Medium but title length', value: 2 },
{ text: 'Large', title: 'Large but title lenght', value: 3 }
];
public value: any = [{ text: 'Medium', value: 2 }];
}
我有一个 kendo 多选组件,效果很好,但是当下拉列表中的文本太长时,我必须将其截断。我至少会在悬停时显示一个带有全文的工具提示。这是所需结果的示例(在此示例中,我将鼠标悬停在第一个结果上,得到一个包含全文的弹出窗口):
这是我的实际 html:
<kendo-multiselect kendoMultiSelectSummaryTag
[data]="enData"
[(ngModel)]="allCo"
[ngModelOptions]="{standalone: true}"
(filterChange)="handleFilterEn($event)"
[filterable]="true"
textField="text"
[virtual]="virtual"
valueField="coId"
(valueChange)="onValueChange($event)"
[value]="selectedCoToFilter"
class="form-control">
</kendo-multiselect>
您可以使用模板完成您想要做的事情。使用模板,您可以自定义下拉项的显示方式、所选项目的显示方式等。因此,您可以添加任何 HTML 您想要的内容,包括长名称值的工具提示。
这是在 Kendo Angular
中自定义模板的一种方法示例import { Component } from '@angular/core';
@Component({
selector: 'my-app',
styles: ['.template { display: inline-block; background: #333; color: #fff; border-radius: 50%; width: 18px; height: 18px; text-align: center; } '],
template: `
<div class="example-config">
Current value: {{value | json}}
</div>
<div class="example-wrapper">
<p>T-shirt size:</p>
<kendo-multiselect
[data]="listItems"
[(ngModel)]="value"
[textField]="'text'"
[valueField]="'value'"
>
<ng-template kendoMultiSelectTagTemplate let-dataItem>
<span class="template">{{ dataItem.value }}</span> {{ dataItem.text }}
</ng-template>
</kendo-multiselect>
</div>
`
})
export class AppComponent {
public listItems: Array<{ text: string, value: number }> = [
{ text: 'Small', value: 1 },
{ text: 'Medium', value: 2 },
{ text: 'Large', value: 3 }
];
public value: any = [{ text: 'Medium', value: 2 }];
}
此处有多个示例和代码: https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/templates/
一种 可能 的方法来使用模板完成您正在寻找的事情 - 我不精通 Angular,所以这可能需要一些调整。这是 StackBlitz 上此示例的 link:https://stackblitz.com/edit/angular-3c7ve2?file=app/app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
styles: ['.template { display: inline-block; background: #333; color: #fff; border-radius: 50%; width: 18px; height: 18px; text-align: center; } '],
template: `
<div class="example-config">
Current value: {{value | json}}
</div>
<div class="example-wrapper">
<p>T-shirt size:</p>
<kendo-multiselect
[data]="listItems"
[(ngModel)]='value'
[textField]="'text'"
[valueField]="'value'"
>
<ng-template kendoMultiSelectItemTemplate let-dataItem>
<div title="{{ dataItem.title }}">{{ dataItem.text }} </div>
</ng-template>
</kendo-multiselect>
</div>
`
})
export class AppComponent {
public listItems: Array<{ text: string, title: string, value: number }> = [
{ text: 'Small but really long ...', title: 'Small but really long text here and here and some more here but extra extra long long long', value: 1 },
{ text: 'Medium', title: 'Medium but title length', value: 2 },
{ text: 'Large', title: 'Large but title lenght', value: 3 }
];
public value: any = [{ text: 'Medium', value: 2 }];
}