我想知道是否有任何方法可以使用Knockout.js拼接使用常量或文本字符串而不是索引号?例如,数组的内容可能会改变,因此,我想使用Array.splice(MyFile.specificTextString)而不是Array.splice(1),它将从索引1开始删除数组中的所有字符串。
答案 0 :(得分:0)
您可以使用ko.pureComputed
和indexOf
来获得所需的结果:
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
来防止改变原始数组。