javascript - knockout.js 为 <select> 和 <option> 绑定(bind)不同的文本

标签 javascript jquery html css knockout.js

是否有可能以某种方式将我的选择(出现在元素中的文本)与我的选项文本分开,以便我可以 trim 它并以更好看的方式返回。

例如在这个Jsbin 我想 trim 选中的元素并在它显示为选中元素时在末尾添加三个点(已经尝试使用 CSS 但由于浏览器差异我放弃了)

最佳答案

您可以使用 computed 创建一个包装器对象来 trim 您的文本:

var ItemModel = function(value){
  var self = this;

  self.value = ko.observable(value);
  self.text = ko.computed(function(){
    val = self.value();
    if (val.length > 15){
      return val.substring(0, 15) + "...";
    }
    return val;
  });
};

添加使用它而不是普通的 js 对象:

self.listOptions = ko.observableArray([
    new ItemModel('Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci'),
    new ItemModel('Neque porro quisquam est qui dolorem ipsum'),
    new ItemModel('Proin ultrices, tellus id placerat congue, neque justo commodo purus, et pulvinar massa')
]);

您还需要修改您的绑定(bind),以便为 valuetext 使用不同的属性:

<select data-bind="foreach: listOptions, value: selectedValue, attr: {title : selectedValue}" >
  <option data-bind="text: text, value: value"></option>
</select>

这是工作的jsbin: http://jsbin.com/oFIdAXO/3/edit

关于javascript - knockout.js 为 <select> 和 <option> 绑定(bind)不同的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19587338/

相关文章:

javascript - 正则表达式交换注释的 HTML 进出

jquery 1.8 触发器

html - 页面的水平滚动条包含表格

php - 如何为新闻站点动态生成 "read more"链接

html - firefox 显示的文字比其他的大

javascript - 如何在Jquery中编辑元素的数据属性

Javascript 按钮重定向到 http ://127. 0.0.1 :5000/?

Javascript减少示例

javascript - jquery this 动画这个没有 id 的元素

jquery - 随机页面不会加载任何 css 文件然后自动修复?