在Knockout JS中检查字符串,然后分割字符串值

问题描述 投票:0回答:1

我有以下数据绑定:

$row().current_tracking

有时 $row().current_tracking 的值为,例如:

372424561624

有时 $row().current_tracking 的值包含两个以逗号分隔的数字,例如:

372424561624, 324562345
  1. 首先我需要检查是否有一个或两个数字。

  2. 如果有两个用逗号分隔的数字,我需要将它们分成两个字符串,例如 $strNo1$strNo2,否则只需使用 $strNo1

  3. 如果有两个数字和字符串,检查它们的长度。

然后我需要检查它们的长度。长号码 = DHL,短号码 = UPS

这可能吗?

knockout.js
1个回答
1
投票

您可以使用自定义绑定根据字符串的内容来转换字符串。

ko.bindingHandlers.checkComma = {    
  init: (element, valueAccessor) => {
    const value = ko.unwrap(valueAccessor())
      .split(',')
      .filter((x) => x ? .trim().length > 0)
      .map((x) => x.trim())
      .join(',')
      .replace(',', '<br>');
    element.innerHTML = value;    
  },
};

class ViewModel {
  constructor() {
    this.rows = ko.observableArray([
      { current_tracking: ko.observable('372424561624, 324562345') },
      { current_tracking: ko.observable(', 372424561624') },
      { current_tracking: ko.observable('372424561624, ') }, 
      { current_tracking: ko.observable(' 372424561624, ') },
      { current_tracking: ko.observable('372424561624,') },
    ]);
  }
}

ko.applyBindings(new ViewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.1/knockout-latest.js" integrity="sha512-2AL/VEauKkZqQU9BHgnv48OhXcJPx9vdzxN1JrKDVc4FPU/MEE/BZ6d9l0mP7VmvLsjtYwqiYQpDskK9dG8KBA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

<ul data-bind="foreach: { data: $root.rows, as: '$row' }">
  <li data-bind="checkComma: $row.current_tracking"></li>
</ul>

© www.soinside.com 2019 - 2024. All rights reserved.