使用Knockout.JS使用文本字符串而不是索引号进行拼接

时间:2018-05-07 01:55:20

标签: knockout.js

我想知道是否有任何方法可以使用Knockout.js拼接使用常量或文本字符串而不是索引号?例如,数组的内容可能会改变,因此,我想使用Array.splice(MyFile.specificTextString)而不是Array.splice(1),它将从索引1开始删除数组中的所有字符串。

1 个答案:

答案 0 :(得分:0)

您可以使用ko.pureComputedindexOf来获得所需的结果:

const dataSource = ko.observableArray(
  ["alpha", "beta", "gamma", "delta", "epsilon", "zeta", "eta"]
);

const cutOffPoint = ko.observable("gamma");

const cutOffData = ko.pureComputed(function() {
  const index = dataSource().indexOf(cutOffPoint());
  
  return (index === -1)
    ? []
    : dataSource().slice(0, index);
});

ko.applyBindings({ dataSource, cutOffPoint, cutOffData });
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

<pre data-bind="text: JSON.stringify(dataSource())"></pre>
<input data-bind="textInput: cutOffPoint">
<pre data-bind="text: JSON.stringify(cutOffData())"></pre>

请注意,我使用slice而不是splice来防止改变原始数组。