2015-03-23 2 views
1

Итак, у меня есть эта галерея, которая загружает данные Instagram, иногда фотография Instagram не поставляется с надписью, и именно тогда она ломается, поэтому наиболее логичной задачей является проверка наличия надписи он все еще ломается.Ошибка привязки нокаута

Live example

<!-- ko if: $root.entries().length != 0 --> 
     <!-- ko foreach: $root.entries() --> 
      <!-- ko with: $root.entries()[$index()] --> 
       <span data-bind="logger: typeof caption"></span> 
       <figure> 
        <img src="" data-bind="attr: {src: images.low_resolution.url}"/> 
        <figcaption> 
          <a target="_blank" data-bind="text: user.username, attr: {href: 'http://instagram.com/' + user.username }"></a> 
         <!--ko if: typeof caption != 'null'--> 
          <span> 
           <!-- ko text: caption.text --><!-- /ko --> 
          </span> 

         <!--/ko--> 
        </figcaption> 
       </figure> 
      <!-- /ko --> 
     <!-- /ko --> 
    <!-- /ko --> 
+0

Вы должны иметь возможность привязки как привязки, так и привязки текста в теге span, а не использовать псевдо-теги ko. Кроме того, проверка длины root.entries не требуется; foreach правильно обрабатывает нулевой регистр. –

ответ

2

Оператор typeof не возвращает null, так что ваш условный фактически безусловным: он всегда старается оказать caption.text даже если caption равна нулю.

Вы можете попробовать:

<!--ko if: caption--> 

, который расширит содержание комментария-шаблона, если caption является "truthy" (не false, null, undefined, 0, пустая строка и т.д.)

+0

Прекрасно работает! – LVDM

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