Aurelia Validation и событие публикуют не обновляющие значения в View
Я использовал метод публикации агрегатов событий, чтобы обновить представление из другого представления. когда я создавал данные публикации и подписки был в состоянии получить в представлении модели, но это не обновляется в представлении с назначенными переменными. Если я использую JavaScript для заполнения значения, он работает, но не может вызвать проверку контроллера.
Ожидаемый результат:
- Из метода подписки я должен заполнить значения представления.
- После этого он должен вызвать валидацию при изменении значения.
В приведенном ниже описании есть два вида и модель. Один из них - это форма регистрации, а второй - форма данных. В форме данных у меня есть таблица с данными, по щелчку каждой строки я публикую одно событие с выбранными данными строки, и на это опубликованное событие я подписываюсь в виде модальной формы регистрации. Для более подробной информации смотрите ниже.
Гист-прогон: https://gist.run/?id=8416e8ca1b9b5ff318b79ec94fd3220c
1 ответ
Два возможных решения: (к вашему "неопределенному" предупреждению)
+ Изменить
alert(this.email);
вalert(myself.email);
Используйте синтаксис толстой стрелки для функции подписки. Изменить:
this.ea.subscribe('MyrowData', function(obj){
вthis.ea.subscribe('MyrowData', obj => {
Этот синтаксис позволяет новой функции сохранять контекст / область родительского элемента, что означает, чтоthis.email
все еще будет доступен.
Еще одно предложение:
Вы можете упростить вашу функцию data-form.js следующим образом:
Изменить:this.eventAggregator.publish('MyrowData', this.items[this.items.indexOf(item)]);
чтобы:this.eventAggregator.publish('MyrowData', item);
Это будет работать, потому что вы уже предоставили item
в вашем вызове функции click.delegate="PopulateData(item, $event)"
,
На самом деле, вы могли бы даже удалить $event
а также event
из двух PopulateData
определения (в data-form.js и data-form.html).
Когда я реализую эти предложения, ваши данные также проверяются правильно.