AngularJS截断选择菜单中的选项值
AngularJS truncate ng-option values from select menu
我有一个应用于选择菜单的Angular Bootstrap选择插件,它将所选菜单项呈现为以下内容:
<button data-toggle="dropdown" class="btn btn-default dropdown-toggle" type="button">
<div class="filter-option pull-left">Item with a very long name</div> <div class="caret"></div>
</button>
我正在尝试开发一个函数,如果所选菜单项名称大于指定长度,该函数将截断该名称。
功能:
$scope.truncate = function(){
var maxLength = 5;
$('button .filter-option').text(function(i, text) {
if (text.length > maxLength) {
return text.substr(0, maxLength) + '...';
}
});
}
对Angular模板中的原始选择标记调用的函数:
<select
class="nya-selectpicker"
ng-model="items"
ng-options="g.name for g in myItems"
ng-change="truncate()">
<option value="">Select</option>
</select>
我的问题:它并没有截断我从菜单中选择的项目;它截断了我模板中两个相邻选择菜单的默认项。
如何更新此函数以截断从菜单中选择的项目?
所以本质上你需要创建一个过滤器。然后,您可以在ng-options
中应用此筛选器。
ng-options="(g.name | myFilter) for g in myItems"
myApp.filter('myFilter', function() {
return function(val) {
var maxLength = 5;
if (val > maxLength) {
return val.substr(0, maxLength) + '...';
} else {
return val;
}
};
});
您可以将过滤器应用于数组(我更喜欢前面的例子)
ng-options="g.name for g in myItems | myFilter"
myApp.filter('myFilter', function() {
var maxLength = 5;
return function(arr) {
var returnArr = [];
for(var i = 0; i < arr.length; i++) {
(function() {
var item = {};
angular.copy(arr[i], item);
if (item.name > maxLength) {
item.name = item.name.substr(0, maxLength) + '...';
}
returnArr.push(item);
})();
}
return returnArr;
};
});
相关文章:
- 如何将CSS(特别是填充/边距)应用于select下拉菜单的选项或optgroup
- 在BootStrap菜单栏中为所选项目设置背景,类似于BootStrap中的父导航选项
- 重置为下拉菜单中的未绑定选项
- 使用java脚本更改onClick事件中菜单选项卡的颜色
- 选择菜单重置为以前选择的选项
- JQueryUI选择菜单-如何添加更多选项
- 如何在javascript中从选项菜单中进行选择
- 在javascript/jquery中获取选择选项菜单
- Chrome 扩展程序选项菜单无法关闭
- 多个选定的索引查询(选择选项菜单)出现问题
- 将普通桌面菜单转换为选择选项菜单(用于移动版本)
- 每个td-li标记上的Onmouseover选项菜单
- 验证下拉选项(菜单)
- 表排序javascript使用选择选项菜单
- 下拉选项菜单与javascript
- disabled和selected在自定义选择选项菜单(Javascript)中不起作用
- 用javascript创建一个选项菜单
- 具有2个值的选项菜单
- 使用数组中的值创建HTML选项菜单
- jQuery -包含尝试选择选项菜单时的问题