2013-08-01 4 views
1

У меня есть следующий фрагмент кода, который содержит кучу заметок, но я хочу показать этот div, если выбранные ноты не равны нулю. Я использовал атрибут length, который работал нормально.jsViews - использование видимого в атрибуте data-link не работает правильно

<div id="notesContainer" data-link="visible{:selectedNotes.length != 0}"> 
     <ul id="notes"> 
     {^{if selectedNotes != null}} 
     {^{for selectedNotes}} 
      <li>{^{:Value}}</li> 
     {{/for}} 
     {{/if}} 
     </ul> 

     <p>There are <span data-link="{:selectedNotes.length}"></span> notes so far...</p> 

     <a id="addNote" data-toggle="modal" href="#addNoteModal" class="btn btn-primary">Add note</a> 

    </div> 

Моя проблема заключается в том, что в пределах div отображается ошибка независимо от того, установлен ли объект selectedNotes. Ошибка: «data.selectedNotes is null». Почему это? Если он находится внутри div, он не должен работать правильно, не показывая абзац?

Я поставил код этой скрипкой: http://jsfiddle.net/armydee/Z9wBJ/

ответ

1

Я обновил свой jsfiddle: http://jsfiddle.net/Z9wBJ/1/

Видимая связывание просто устанавливает свойство CSS «дисплей», чтобы «ни один», чтобы скрыть DIV. Но содержимое все еще отображается в DOM. Если selectedNotes имеет значение NULL, то попытка тестирования selectedNodes.length приведет к ошибке javascript. Вы можете просто включить нулевую проверку:

"visible{:selectedNotes && selectedNotes.length != 0}">

и:

<span data-link="{:selectedNotes && selectedNotes.length}">

+0

Отлично - спасибо Борису за быстрый ответ. –