Сфера действия реф в Аурелии

У меня есть ссылка на форму, которая является пользовательским элементом

<form ref="domRef" ...>

У меня есть ref для поля тоже, который является другим пользовательским элементом (используется внутри формы)

<input type="text" ref="domRef" .....>

но внутри attach() модели представления формы я получаю this.domRef является ссылкой ввода.

attached(){        
     console.log(this.domRef);
}

Таким образом, по мере выполнения domRef переопределяется последней. Зачем?

Почему domRef не отличаются для разных областей применения?

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

Обновление после ответа Эшли:

Пользовательская форма элемента имеет свою собственную виртуальную машину, а поле пользовательского элемента также имеет свою собственную виртуальную машину.

Просмотры:

    <template>
        <form ref="domRef">
                <compose view-model="resources/elements/field" ..... containerLess>
                </compose>
        </form>
    </template>
    <template>
        <input type="text" ref="domRef"></input>
    </template>

Просмотр-модель:

    export class Form{
     ..
     attached(){
      console.log(this.domRef); //returns Input's Ref Which is not correct
     }
    }
    export class Field{
     ..
     attached(){
      console.log(this.domRef); //returns Input's Ref Which is correct
     }
    }

Тогда, если domRef принадлежит текущей ВМ, почему это происходит?

2 ответа

Решение

Выкопав все, я получил решение. т.е. инициализация domRef во время конструирования.

    export class Form{
     constructor(){
       this.domRef = null;
     }
     attached(){
      console.log(this.domRef); //returns Form's Ref Which is correct
     }
    }
    export class Field{
     constructor(){
       this.domRef = null;
     }
     attached(){
      console.log(this.domRef); //returns Input's Ref Which is correct
     }
    }

Странно, но сработало.

scope ваша виртуальная машина, а не какой-либо элемент HTML, так this.domRef будет установлен последний элемент, который Аурелия установила для этого свойства.

Если имя генерируется динамически, не могли бы вы просто изменить код генерации имени?

Другие вопросы по тегам