Первоначально я имел что-то вроде следующего:Нокаут для отображения только если свойство = значение?
<span data-bind="foreach: objects">
<span data-bind="if: object.type() === 'menuItem'>
...
</span>
</span>
Это технически работал, но на самом деле создал DOM элемент для каждого объекта, независимо от типа, но согласующие из них были единственными «заселенных». Он оставил небольшие пробелы в пользовательском интерфейсе.
Я перешел на использование виртуального элемента, который работает намного лучше, но все еще показывает вверх в DOM в
<!-- ko if: object.type() === 'menuItem'>
<!-- /ko -->
для всех nonmatching элементов.
Есть ли способ вставить оператор if в исходный файл foreach или было бы лучше сделать эту логику в viewmodel каким-то образом?
Так что, если я есть тысяча объектов, и 5 из них - это меню. Я не должен беспокоиться о комментариях 995 ко в доме? Я не саркастичен, серьезно хочу подтвердить. –
Если вы хотите, чтобы 995 объектов были спрятаны для надлежащей привязки данных и показывали, проверено ли значение, которое вы тестируете на изменения, тогда исправьте, вам нужно оставить там комментарии 995 или пойти с вычисленными, как указано выше. –
Совершенно нормально иметь логику представления в модели представления. Вот почему это ** view ** модель, а не только ** модель **. –