1

Я пытаюсь создать мастер специальных форм, который будет содержать различные шаги автоматической обработки на основе определенных условий. Пример упрощенного примера meteorPad приведен ниже. Когда реактивный источник данных (переменная сеанса) изменяет работу реактивного вычисления (помощника шаблона), подтверждается выходом консоли. Шаблон, однако, не обновляется и по-прежнему имеет такое же количество шагов. Есть ли что-то, что мне нужно сделать, чтобы правильно обновить шаблон? Благодаря! http://meteorpad.com/pad/cPWShRiTKYpBaMahn/LeaderboardШаблон Meteor не обновляется при повторном запуске помощника шаблона

HTML

<body> 
    {{> basicWizard}} 
    {{> changeSteps}} 
</body> 

<template name="basicWizard"> 
<!--shouldn't the steps variable update when the helper runs?--> 
    {{> wizard id="basic-wizard" steps=steps}} 
</template> 

<template name="changeSteps"> 
<button id="changeStepsButton"> change number of Steps </button> 
</template> 

код клиента

Session.set('twoSteps', false); 

information = new SimpleSchema({ 
    password: { 
    type: String, 
    label: 'password', 
    }, 
}); 
confirm = new SimpleSchema({ 
    userName: { 
    type: String, 
    label: 'blah', 
    }, 
}); 

Template.basicWizard.helpers({ 
    steps: function() { 
     var ret = []; 
     if (Session.get("twoSteps")) { 
     ret[ret.length] = 
     { 
      id: 'information', 
      title: 'Information', 
      schema: information, 
     } 
     } 
     ret[ret.length] = 
     { 
      id: 'confirm', 
      title: 'Confirm', 
      schema: confirm , 
     } 
     console.log("num steps: " + ret.length) 
     return ret; 
    } 
    }); 

Template.changeSteps.events({ 
    "click #changeStepsButton": function (event) { 
    Session.set('twoSteps', !Session.get("twoSteps")); 
    }, 
}) 
+0

Лично для меня метеорит не загружается, он остается в состоянии загрузки навсегда, а на консоли я вижу коды ошибок 400 и 404. Возможно, это проблема моей локальной настройки (брандмауэр и т. Д.), Но можете ли вы разместить свой код где-то еще? – Petr

+0

Спасибо, что сообщили мне! Я добавил код к вопросу. – jjr4826

ответ

1

Похоже хлопот, что Мастер не обрабатывает действия реактивно. Я подозреваю, что следующий код в пакете мастера:

«Новый WizardConstructor» вызов ниже, где я думаю, что реакционная способность ломать: Template.wizard.created = функция() { вар ID = this.data. id || defaultId; this.wizard = wizardsById [id] = новый WizardConstructor (this.data); };

Где-то в мастере конструктора он делает этот вызов: _.each (this.steps, функции (шаг) { self._initStep (шаг); });

Но я не думаю, что Метеор знает, как воссоздать шаблон при изменении «this.data». Технически мастер не привязан к «шагам», поэтому он не работает. Я подозреваю, что создатель пакета мастера не собирался использовать его таким образом.

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