有没有任何方法可以使用knockoutjs将一些文本复数化
Is there any way to pluralize some text using knockoutjs
文本数据绑定表达式只能有一个属性。如何根据另一个属性的计数将某些文本复数化?
有几种方法可以做到这一点。我在这里展示了两种方法:http://jsfiddle.net/njj2P/2/
我展示的第一个选项是使用ko.computed,根据评估来确定名称应该以单数还是复数形式返回。
this.formattedName = ko.computed(function() {
return this.qty() > 1 ? this.name() + "s" : this.name();
}, this);
第二个选项显示了如何在没有计算属性的情况下,而是使用条件绑定来实现这一点。
<span data-bind="if:qty()>1">s</span>
您可以创建一个可重用的自定义绑定,如下所示。
ko.bindingHandlers.pluralize = {
update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
function count(data) {
var value = ko.utils.unwrapObservable(data);
if (typeof value === "object" && value.length > 0) {
return value.length;
} else if (typeof value === "number") {
return value;
}
}
var settings = valueAccessor();
var text = count(settings.data) === 1 ? settings.singular : settings.plural;
$(element).text(ko.utils.unwrapObservable(text));
}
};
你会这样用的。
<span data-bind="pluralize: { data:items, singular:'entry', plural:'entries' }"></span>
data
选项可以指向任何数组或数字singular
选项表示如果data
的计算结果为1,则要显示的文本plural
选项表示将以其他方式显示的文本
请在此处查看它的实际操作。http://fiddle.jshell.net/jessegavin/wamfw/
相关文章:
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 用Javascript重新格式化复杂文本日期字符串的更好方法
- jquery插件或javascript方法自动调整文本输入(而非文本区域)(固定宽度)可变高度的大小
- 无法使用 $('input[name=“rate”]').focus() 聚焦文本框;方法
- 有没有一种方法可以从两个标签之间提取文本,并以我选择的格式输出
- 我能从“;输入“;事件是否有更好的方法来跟踪文本更改
- 不使用自定义CSS或HTML(使用框架方法)的角度材质文本输入或文本区域标签大小
- 有没有一种简单的方法可以将整数转换为等效文本.即:1变为1
- 任何编写文本文件并将其替换为上一个文本文件的方法
- 使用Javascript,获取元素的方法是什么,基于打开和关闭标记之间的文本
- 如何从该文本的 onclick 方法中更改 d3.js 文本输入
- 如何在OnPaste方法中清除文本区域
- 什么'这是使用jQuery将一些文本锚定到外部链接的最简单方法
- JavaScript 表单操作更改RC方法发布文本输入提交
- 使用JavaScript过滤从网页复制的文本的最简单方法
- 有没有一种方法可以用包含ENTER键换行符的SQL数据填充文本区域表单
- Angular promise回调不是在构造函数方法内部触发,而是在对象文本方法中触发
- 我如何结合用户输入改变文本方法和一个if语句
- 在对象文本方法周围传递异步值