"для цикла" для нокаутов - PullRequest
0 голосов
/ 16 мая 2019

У меня есть страница, содержащая много элементов (observablearray), поэтому я создал систему подкачки.(Ну, не создал себя, но скопировал отсюда Как обрабатывать нумерацию страниц с помощью Knockout ;))

Я хочу показать отдельные кнопки на странице.Что-то вроде:

<  1 2 3 4  >

У меня есть свойство "totalPages", но как я могу использовать это во внешнем интерфейсе?

Как я могу перебрать нокаутирующую переменную int и создать ссылкик функции с тем же int?

Я надеялся что-то вроде этого:

<ul data-bind="foreach: totalPages">
    <li><a href="#" data-bind="text: $index, click: pageNumber($index)"></li>
</ul>

но это не работает.

1 Ответ

0 голосов
/ 16 мая 2019

Вы можете использовать Array.from(), чтобы создать пустой массив и использовать его в foreach.Добавьте обертку для функции click, чтобы получить $index() + 1 в качестве параметра:

const viewModel = {
  totalPages: ko.observable(4),
  pageNumber: n => console.log(n)
}

ko.applyBindings(viewModel)
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<ul data-bind="foreach: Array.from({ length: totalPages() })">
    <li>
      <a href="#" data-bind="text: $index() + 1, click: () => $parent.pageNumber($index() + 1)"></a>
    </li>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...