как повторно визуализировать дочерний компонент внутри другого компонента без контроллера Ember

У меня есть имя родительского компонента - card-mode

**card-mode.js**
import Ember from 'ember';

export default Ember.Component.extend({
    card: null,
    previousPage: null,
    nextPage: null,
    init(){
        this._super(...arguments);

        if(this.get('errand').selectedMeasure != null){
            this.setCard("page/card/measure-master-summary");
        }
    },
    setCard(card){
        this.set('card', card);
    },
    actions: {
        setCard(name){
          this.setCard(name);
        },
        next(name){
            console.log(name);
            this.setCard(name);
        },
        previous(name){
            console.log(name);
            this.setCard(name);

        },
    }
});

**card-mode.hbs**
<div>
{{component card setCard=(action 'setCard') }}
</div>
<div>
<a href="#" class="btn btn-primary padding-lr" onclick={{action "previous" previousPage}}>previous<i class="fa fa-arrow-circle-right"></i></a> 
<a href="#" class="btn btn-primary padding-lr npc" onclick={{action "next" nextPage}}>Next <i class="fa fa-arrow-circle-right"></i></a> 
</div>

В этом компоненте режима карты я будет визуализировать компонент, вызывая метод setcard.

До этого работает нормально.

Но теперь мне нужно несколько раз визуализировать один и тот же дочерний компонент в родительском компоненте.

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

но когда я снова пытаюсь вызвать дочернюю страницу-2, вызов функции инициализации дочерней страницы-2 снова не выполняется.

child-page-2.js

export default Ember.Component.extend({

    errand: Ember.inject.service(),
    selectedDimensionAnalysis: null,
    analysisTable:null,

    init(){
        this._super(...arguments);
        this.parentView.set('nextPage','child-page-1');
        this.parentView.set('previousPage','child-page-2');

        // results that will be displayed - 
        //results will be varied everytime based on the number of times it is called
    },
});

Мой вопрос:

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


person bjkpriyanka    schedule 14.02.2017    source источник


Ответы (1)


Вы ошибочно предполагаете, что контроллера нет. Если вы не определите один Ember generates, то один за вас.

Если вы устанавливаете Ember Inspector, вы можете видеть, какие контроллеры присутствуют https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi?hl=en

введите здесь описание изображения

Предложение:

Компонент можно визуализировать несколько раз, если он добавлен в HBS файл руля. Создайте экземпляр нового компонента и передайте ему свойства, которые вы хотите использовать, от родителя.

образец HBS

{{child-page
        currentPage=3
        property1='something'
        property2='something'
}}
person mihai    schedule 15.02.2017