Я пытаюсь установить флажок внутри кнопки, и оба щелчка на флажке или кнопка должны переключать флажок и логическое значение, привязанное к нему из модели представления.Aurelia checkbox внутри кнопки
app.html:
<template>
<h1>${heading}</h1>
<button type="button" click.trigger="toggleIsChecked()">
<input type="checkbox" checked.bind="isChecked"> ${isChecked}
</button>
</template>
app.ts:
export class App {
isChecked: boolean;
toggleIsChecked() {
this.isChecked = !this.isChecked;
}
}
Что происходит, что при нажатии на кнопку (вне флажком) все работает, как ожидалось. Но когда я нажимаю флажок, логическое значение в модели просмотра изменяется, но флажок не установлен или не установлен. Что может быть причиной этого?
Я пробовал разные подходы, но все они дают похожие результаты. Во время отладки я заметил, что флажок проверяется, но что-то в рамках Aurelia удаляет его почти мгновенно. Похоже, обработка событий не работает должным образом?
EDIT: Я сделал суть, так что вы можете попробовать это сами: https://gist.run/?id=4a7b2c11db33bdb37213eb4ea1b5b2b0
IIRC, на флажке вы должны использовать одностороннюю привязку: 'checked.bind =" isChecked "' должно быть 'checked.one-way =" isChecked "'; Кроме того, вы, вероятно, захотите использовать click.delegate, а не триггер. –
Кроме того, взгляните на этот вопрос SO: http://stackoverflow.com/questions/35296915 –
Привет, спасибо за советы, но переход на одностороннюю привязку не исправил, и не щелкнул .delegate. Я прочитал вопрос SO, с которым вы связались раньше, и попробовал разные предложения там, но безуспешно. На самом деле принятый ответ на связанный с вами вопрос предполагает использование двусторонней привязки вместо односторонней. – mattipet