文本数据结合的表情只能有一个单一的财产。我怎么会是在一个月内可利用某些文本取决于计数的另一个酒店?

有帮助吗?

解决方案

有几种方法可以做到这一点。我在此处显示的小提琴中演示了两种方式: http://jsfiddle.net/njj2p/2/

我显示的第一个选择是使用ko.com来确定基于评估的单数或复数形式是否应返回名称。

  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/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top