2016-08-31 2 views
-1

Я пытаюсь реализовать динамическую композицию в аурелии. Точнее, я создаю вкладки, и для каждой новой вкладки я добавляю новый div, и внутри я использую composEngine.compose (...), чтобы добавить компонент, соответствующий этой вкладке. Рабочий пример можно найти здесь: https://gist.run/?id=08a04dad8d94af01989d789a216195f3. Я испытываю какое-то странное поведение. Например, если я дважды открываю один и тот же компонент на 2 вкладках, он, похоже, повторно использует (совместно использовать) viewModel. Просто откройте модуль 2 один раз, нажмите «Изменить», чтобы увеличить счетчик, затем снова откройте его. Он покажет предыдущее значение. Есть идеи?Динамическая композиция Aurelia

ответ

0

Вы можете пометить ваши модели просмотра с transient декоратора

import {transient} from 'aurelia-framework' 
@transient() 
export class M2 { 
    cnt = 1; 

    click(event){ 
    this.cnt = this.cnt + 1; 
    } 
} 
0

Спасибо Джеймс, вы правы, в то же время я понял причину моей проблемы. СоставEngine вызывает container.get (...), который, по умолчанию, возвращает одиночный элемент каждого класса. Добавив @transient(), как вы сказали, контейнер возвращает новый экземпляр. Я все еще не понимаю, как (где) аурелия создает экземпляр модели для других случаев. Я предполагаю, что контейнеры действительно являются деревом, которое необходимо зарегистрировать модели, используя registerInstance в дочернем контейнере (созданный после container.createChild())

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