на более длинном массиве. Что-то вроде этого:

ли использоватьdata-bind: foreach для более чем одного массива?
Например:

<div data-bind="foreach: arrayone, arraytwo">
   //do stuff
</div>

Если это возможно, какой правильный синтаксис для него? Или как правильно это сделать (помимо слияния двух массивов)?

 Jason Spake26 окт. 2017 г., 19:22
Я не уверен, что это будет даже делать. Каково было бы ваше ожидаемое поведение? Вы хотите полностью пройти через arraytwo для каждого индекса arrayone?

Ответы на вопрос(1)

Решение Вопроса

что существует какой-либо официальный способ сделать это, но обходной путь был бы, чтобы использовать$index вместе сforeach на более длинном массиве. Что-то вроде этого:

var model = function() {
  var self = this;
  
  self.arr1 = ko.observableArray([1,2,3, 5, 6]);
  self.arr2 = ko.observableArray([1,2,3,4]);
  
}

ko.applyBindings(new model());
span {
  font-weight: bold;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<br/>

<div data-bind="foreach: (arr1().length > arr2().length ? arr1 : arr2)">
  Index: 
  <span data-bind="text: $index"></span>,
  
  Array 1: 
  <span data-bind="text: $root.arr1()[$index()]"></span>,
  Array 2: 
  <span data-bind="text: $root.arr2()[$index()]"></span>,
  Longer array: 
  <span data-bind="text: $data"></span>,
  Shorter array: 
  <span data-bind="text: ($root.arr1().length < $root.arr2().length ? $root.arr1()[$index()] : $root.arr2()[$index()])"></span>
  <br/>
</div>

Ваш ответ на вопрос