有没有在淘汰赛JS的的IValueConverter的方法吗?(Is there an altern

2019-08-01 02:19发布

首先,我知道你可以使用计算可观。 它们是复杂性真的很棒,但国际海事组织是不是你在Silverlight有IValueConverters一个值得更换。 在我当前的项目,我有多个datepickers。 现在,我要为每一个日起计算观察到一个额外的,因为我想要的格式工作。 所以,如果我有5日这10个物业,在Silverlight中,你将有5日和1个通用dateconverter。

它的工作原理,但它不是很干净的代码..且不说应用验证这些日期时,你得到的问题..

有什么样:

<input type="text" data-bind="value: TestProperty" data-converter="MyTextConverter" />

或有任何替代这里面并不让我共创双属性?

提前致谢,

阿恩Deruwe

Answer 1:

您现在看到的一个主要用途定制的结合 。 在这里看到一个很好的指导

ko.bindingHandlers.dateConverter = {
  init: function (element, valueAccessor, allBindingsAccessor) {
    var underlyingObservable = valueAccessor();
    var options = allBindingsAccessor().dateConverterOptions
                    || { /* set defaults here */ };

    var interceptor = ko.computed({
      read: function() {
        return underlyingObservable();
      },

      write: function(newValue) {
        var current = underlyingObservable(),
            convertedDate;

        /* do some kind of conversion here, using the 'options' object passed */

        if (convertedDate !== current) {
          underlyingObservable(convertedDate);
        }
        else if (newValue !== current.toString()) {
          underlyingObservable.valueHasMutated();
        }
      }
    });

      ko.applyBindingsToNode(element, { value: interceptor });
  }
};

从修改拦截代码这里

编辑:

和你的HTML看起来像:

<input type="text"
       data-bind="dateConverter: TestProperty,
                  dateConverterOptions: { format: 'dd/mm/yyyy', anotherOption: 'example' } " />


文章来源: Is there an alternative to the IValueConverter in Knockout js?
标签: knockout.js