Hi Guys,
I’m just wondering if there is an issue with timing on the Data API or am I missing something.
I’m testing making a quiz and when I try to get the answer data attribute that I set on the question controllers DOM element it always comes back false. I can see it in the DOM though so I know it’s being set.
question_controller.js
export default class extends Controller {
static targets = ["answer"];
answer(e) {
var event = new Event("answered");
this.element.dispatchEvent(event);
this.currentAnswer = e.target.value;
}
set currentAnswer(value) {
this.data.set("answer", value);
}
}
quiz_controller.js
export default class extends Controller {
static targets = ["question"];
checkQuestion(e) {
let q = this.application.getControllerForElementAndIdentifier(
e.currentTarget,
"question"
);
console.log(q); // Controller
console.log(q.data.has("questionAnswer")); // false
}
}
I’d expect q.data.has("questionAnswer")
to be true
. I tried q.data.has("answer")
too and that’s also false
. Is there a timing issue here e.g stimulus can’t pick up the change in time or have I missed something?
Appreciate any help, thanks.