knockout.js 在Knockout JS中检查字符串,然后拆分字符串值

pdtvr36n  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(143)

我有以下数据绑定:

$row().current_tracking

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

372424561624

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

372424561624, 324562345

1.首先,我需要检查是否有一个或两个数字。
1.如果有两个数字用逗号分隔,我需要将它们分成两个字符串,例如 $strNo1$strNo2,否则就使用 $strNo1
1.如果是两个数字和字符串,检查它们的长度。
我需要检查它们的长度。长号码= DHL,短号码= UPS
这可能吗?

bcs8qyzn

bcs8qyzn1#

你可以使用Custom Binding来根据字符串的内容转换字符串。

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>

相关问题