2014-01-11 2 views
1

В чем разница между:Получение данных в шаблоны без вспомогательных функций

Session.set("sessionclickcount",1); 
    Template.hello.clickcount = Session.get("sessionclickcount"); 

и

Session.set("sessionclickcount",1); 
    Template.hello.clickcount = function() 
    { 
    return Session.get("sessionclickcount"); 
    }; 

я пытаюсь обновить данные шаблона позже, изменив переменную сеанса, используя следующий код:

Template.hello.events({ 
    'click input' : function() { 
     Session.set("sessionclickcount", 
     Session.get("sessionclickcount")+1); 
    } 
    }); 

Первый способ не работает, html не изменяется. Второй успех. Зачем? Благодаря!

ответ

1

Помощники в метеорной функции должны возвращать функции. Это связано с тем, что функция запускается в контексте и позволяет метеору отслеживать зависимости.

Эти зависимости затем помогают метеориту знать, что шаблон необходимо перерисовать с новыми данными.

Если вы используете Template.hello.clickcount = Session.get("sessionclickcount");, двигатель рендеринга (искры) не получает никаких зависимостей от этого, поэтому он не изменяется. Он не знает, что он должен перерисовать его.

+0

Когда OP сказал: «Первый метод терпит неудачу ...», что он имел в виду, «значение не меняется», а «ничего не отображается». В этом случае всегда будет отображаться значение «1». – alanning

+0

Изменил, спасибо. – Akshat

2

Помощники в метеор могут быть либо функциями, либо постоянными значениями.

От docs:

Помощники также может быть использован для передачи в постоянных данных.

// Прекрасно работает с {{#aach sections}} Template.report.sections = ["Ситуация", "Осложнение", "Разрешение"];

В вашем случае вы настраиваете помощника к постоянному значению 1, потому что это значение поля сеанса в то время была выполнена эта строка JavaScript:

Template.hello.clickcount = Session.get("sessionclickcount");

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