2015-06-29 3 views
0

Я пытаюсь отобразить строку «Данные не найдены». внутри строки таблицы всякий раз, когда массив данных пуст, но кажется, что сообщение всегда печатается независимо от того, что.Если инструкция в knockout.js не работает должным образом

Reproduction online (не обращая внимания на состояние orders.length ==0)

Что я делаю неправильно?

<table> 
    <thead> 
     <tr> 
      <th>Truck</th> 
      <th>Pickup</th> 
     </tr> 
    </thead> 
    <!-- ko if: orders.length==2 --> 
    <tbody> 
     <tr colspan="2">No data was found.</tr> 
    </tbody> 
    <!-- /ko --> 
    <tbody data-bind="foreach: orders"> 
     <tr> 
      <td data-bind="text: truck"></td> 
      <td></td> 
     </tr> 
    </tbody> 
</table> 

ответ

2

Если orders является ko.observableArray вам нужно написать orders(), чтобы получить основной массив и получить длину оттуда:

<!-- ko if: orders().length== 0 --> 

Ваш HTML также недействительным, td элементы отсутствуют:

<!-- ko if: orders().length==0 --> 
    <tbody data-bind="if: orders().length==0"> 
     <tr colspan="2"><td>No data was found.</td></tr> 
    </tbody> 
<!-- /ko --> 

Демо-версия JSFiddle.

+0

Я изменил его, но это не то, что я ожидал. Кажется, делается наоборот: http://jsfiddle.net/fxhkszmx/6/ – Alvaro

+0

@Alvaro У вашей скрипки есть несколько проблем. «Данные не найдены» не находится в '', поэтому заканчивается не в том месте, и ваше назначение данных неверно - это должно быть просто' self.orders (data); '- no need for' = '. [См. Эту версию] (http://jsfiddle.net/fxhkszmx/8/) –

+0

Спасибо, что указали мои ошибки! Я приму ответ за 3 минуты. – Alvaro

Смежные вопросы