2015-07-12 4 views
3

У меня есть table с большим количеством tr, когда моя страница НАГРУЗКИ 1-й тр-шоу и второй Тг скрыть, например:Показать Скрыть элементы Метеор путь

<table> 
    <tr></tr> // shows 
    <tr></tr> // hide 
    <tr></tr> // shows 
    <tr></tr> // hide 
    ... 
    ... 
    etc. 
</table> 

То, что я хочу построить: при нажатии на «шоу» т.р., нижней тр (который находится внизу) сусло показывает также, и когда вы нажали на «NEW» показывает тр он должен скрыть (например, тумблер)

ПРОБЛЕМА : Когда я clcked на "шоу" тр, ALL "скрыть" тр показывает тоже НЕ один, который находится под

Мой КОД:

<template name="postJobs"> 
    <tr class="smallInfo"> 
    // some code 
    </tr> 
    {{#if showFullContent}} 
    <tr class=" bigInfo"> 
    // some code 
    </tr> 
    {{/if}} 
</template> 


Template.postJobs.helpers({ 
    showFullContent:function(){ 
    return Session.get('showContent'); 
    } 
}); 

Template.postJobs.events({ 
    'click .smallInfo':function(){ 
    Session.set('showContent',true); 
    }, 
    'click .bigInfo':function(){ 
    Session.set('showContent',false); 
    }, 
}); 

Я не хочу использовать JQuery

+1

ответ Saimeunt выглядит как то, что вы хотите. Для получения дополнительной информации см. [Эта статья] (https://dweldon.silvrback.com/scoped-reactivity). –

ответ

4

Проблема с вашим текущим кодом заключается в том, что вы используете Session, который является глобальным реактивным словарем, что означает, что вы только сохраняете одно состояние для всех строк таблицы.

Вот решение, используя шаблон ReactiveVar область действия объекта:

HTML

<template name="jobsTable"> 
    <table> 
    {{#each jobs}} 
     {{> postJobs}} 
    {{/each}} 
    </table> 
</template> 

<template name="postJobs"> 
    <tr class="smallInfo"> 
    // some code 
    </tr> 
    {{#if showFullContent}} 
    <tr class=" bigInfo"> 
     // some code 
    </tr> 
    {{/if}} 
</template> 

JS

Template.postJobs.onCreated(function(){ 
    this.showFullContent = new ReactiveVar(false); 
}); 

Template.postJobs.helpers({ 
    showFullContent: function(){ 
    return Template.instance().showFullContent.get(); 
    } 
}); 

Template.postJobs.events({ 
    "click .smallInfo": function(event, template){ 
    template.showFullContent.set(true); 
    }, 
    "click .bigInfo": function(event, template){ 
    template.showFullContent.set(false); 
    } 
}); 
+0

Я не понимаю, как это работает, но спасибо, очень хорошо –

+0

Вам нужно будет запустить meteor add reactive-var, если вы еще этого не сделали по https://forums.meteor.com/t/uncaught-referenceerror-reactivevar -is-не определены/11406/2 –

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