Как перерендерить компонент, если он содержит хелпер?

Проблема

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

В моем шаблоне компонента у меня есть что-то вроде этого:

{{my-helper value}}

В связанном файле компонента js у меня есть это действие:

fillGrid(location, length) {
  /* logic */

  this.rerender();
},

как я сделал

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

fillGrid(location, length) {
    let me = this;
    this.set('show', false);

    /* logic */

    Ember.run.later(function() {
      me.set('show', true);
      me.rerender();
    }, 10);
}

И в шаблоне:

{{#if show}}
    {{my-helper value}}
{{/if}}

Это правильный способ сделать это?


person Gemkodor    schedule 18.03.2017    source источник


Ответы (1)


Вам не нужно вызывать this.rerender() явно. Если вы изменили свойство value, то my-helper будет автоматически вызываться для пересчета, и оно будет отображаться в шаблоне компонента.

person Ember Freak    schedule 19.03.2017