我有以下数据绑定:
$row().current_tracking
有时 $row().current_tracking 的值为,例如:
372424561624
有时 $row().current_tracking 的值包含两个以逗号分隔的数字,例如:
372424561624, 324562345
首先我需要检查是否有一个或两个数字。
如果有两个用逗号分隔的数字,我需要将它们分成两个字符串,例如 $strNo1 和 $strNo2,否则只需使用 $strNo1。
如果有两个数字和字符串,检查它们的长度。
然后我需要检查它们的长度。长号码 = DHL,短号码 = UPS。
这可能吗?
您可以使用自定义绑定根据字符串的内容来转换字符串。
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>