2013-12-06 3 views
0

Я работаю над приложением с использованием метеоритов. Я совершенно не знаком с метеор. В моем приложении я использую dataTables с метеор для короткого замыкания, разбивки на страницы и поиска.
Это мой код шаблонаdatatables не обновляется в meteorjs

<template name="questions"> 
    <div class="col-md-3"> 
     {{#constant}} 
     <table class="table table-striped table-bordered table-condensed table-hover listing" 
       id="content_listing-table"> 
      <thead> 
      <tr> 
       <th>Questions</th> 
      </tr> 
      </thead> 
      <tbody> 
      {{#each questions}} 
      <tr> 
       <td> 
        <a href="#" data-id={{_id}} class="edit"> {{questionSubString question_text}}</a> 
       </td> 
      </tr> 
      {{/each}}  
      </tbody> 
     </table> 
     {{/constant}} 
    </div> 
</template> 

и мой метеор код

Template.questions.rendered = function() { 
$("#content_listing-table").dataTable(); 
} 

Template.questions.questions = function() {  
return Meteor.questions.find({topic_id: Session.get("currentTopicId")}) 

}

моя проблема, когда я добавить вопрос в базе данных не похоже на шаблоне. и генерировать исключение. Я знаю, что это из-за данных. и datatable не обновляется при обновлении документа. Я попробовал много примеров из stackoverflow, но не мог избавиться от этой проблемы. Я пытался добавить строку динамически, но всегда предупреждаю. и, похоже, он не делает правильного пути. Могу ли я удалить динамические элементы из элемента динамически? помощь будет оценена EDIT:

$('#content_listing-table').dataTable().fnClearTable(); 
$('#content_listing-table').dataTable().fnAddData(Meteor.questions.find().fetch()); 

Я пытаюсь сделать эту первую пустую таблицу, а затем снова добавить данные к нему. Но здесь он опустошает таблицу, чтобы не добавлять данные снова.

ответ

1

Вы используете {{constant}}. Это отключает реактивность для этой части шаблона.

Попробуйте избавиться от своей постоянной области и запустить метеорит, используя meteor --release template-engine-preview-5.5. Это запустит метеорит, используя новый движок шаблона Meteor. Нет constant s или preserve s в пользовательском интерфейсе Meteor - он достаточно умен, чтобы изменения DOM на мелкозернистом уровне, поэтому он должен работать из коробки с такими вещами, как плагины jQuery.

+0

Я использую константу здесь, потому что у меня есть некоторые ссылки в таблице. Если я не использую '{{constant}}, здесь все ссылки будут отключены. и '' выглядит пустым, без каких-либо данных или ссылки –

+0

И я использую метеорит. 6.6 –

+0

Предварительный просмотр 5.5 двигателя шаблона новее, чем текущий релиз Meteor 0.6.6.3. Как говорят документы Meteor, «Содержимое внутри вспомогательного блока блока« # constant »сохраняется точно так же, даже если включенный шаблон повторно отображается». Это означает отсутствие реактивности. Вам нужно подождать нового механизма шаблонов или использовать предварительный выпуск, как я уже сказал. – sbking

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