Сфера действия реф в Аурелии
У меня есть ссылка на форму, которая является пользовательским элементом
<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
будет установлен последний элемент, который Аурелия установила для этого свойства.
Если имя генерируется динамически, не могли бы вы просто изменить код генерации имени?