Forum Discussion
Events only triggered once [Dashboard confirmed]
I've started implementing some functionality using the tileClicked event on an embedded dashboard, it works great but the event is only triggered once and then never again.
Here's a watered down version of things I used for a sanity check:
var embeddedDashboard = powerbi.embed({{myElem}}, {{myConfig}});
embeddedDashboard.on('tileClicked', function (event) {
console.log('tile clicked event', event);
});This will log once but never again.
v-ljerr-msft
I should have updated this post, the problem was actually that empty DOM elements were infront of my dashboard element and so I was never actualy clicking on the tile after the first time (where they get added), it just looked like it. Bit of a rookie mistake really, I clearly wasn't thinking but it's all working now.
FYI though, you are able to have multiple listeners for the same event on an element.
For examplevar embeddedDashboard = powerbi.embed({{myElem}}, {{myConfig}}); embeddedDashboard.on('tileClicked', function (event) { console.log('tile clicked event', event); });
embeddedDashboard.on('tileClicked', function (event) {
console.log('I would log after the above console log');
});Using off
var embeddedDashboard = powerbi.embed({{myElem}}, {{myConfig}}); embeddedDashboard.on('tileClicked', function (event) { console.log('You will never see me', event); });
embeddedDashboard.off('tileClicked);
embeddedDashboard.on('tileClicked', function (event) {
console.log('You would see me though!');
});var embeddedDashboard = powerbi.embed({{myElem}}, {{myConfig}}); embeddedDashboard.on('tileClicked', function (event) { console.log('You will never see me', event); });
embeddedDashboard.on('tileClicked', function (event) {
console.log('Or me!');
});
embeddedDashboard.off('tileClicked');
2 Replies
- v-ljerr-msftMicrosoft Employee
Hi godd4k,
According to your description above, I just tested the tileClicked event with Microsoft Power BI Embedded Sample. And the tileClicked event can be triggered more that once(every time I clicked a tile on the dashboard).
I assume you may need to firstly remove the tileClicked event handler if it already exists to make it work in this scenario.:smileyhappy:
var embeddedDashboard = powerbi.embed({{myElem}}, {{myConfig}});
//.off removes a given event handler if it exists. embeddedDashboard.off("tileClicked"); embeddedDashboard.on('tileClicked', function (event) { console.log('tile clicked event', event); });Regards
- godd4kRegular Visitor
v-ljerr-msft
I should have updated this post, the problem was actually that empty DOM elements were infront of my dashboard element and so I was never actualy clicking on the tile after the first time (where they get added), it just looked like it. Bit of a rookie mistake really, I clearly wasn't thinking but it's all working now.
FYI though, you are able to have multiple listeners for the same event on an element.
For examplevar embeddedDashboard = powerbi.embed({{myElem}}, {{myConfig}}); embeddedDashboard.on('tileClicked', function (event) { console.log('tile clicked event', event); });
embeddedDashboard.on('tileClicked', function (event) {
console.log('I would log after the above console log');
});Using off
var embeddedDashboard = powerbi.embed({{myElem}}, {{myConfig}}); embeddedDashboard.on('tileClicked', function (event) { console.log('You will never see me', event); });
embeddedDashboard.off('tileClicked);
embeddedDashboard.on('tileClicked', function (event) {
console.log('You would see me though!');
});var embeddedDashboard = powerbi.embed({{myElem}}, {{myConfig}}); embeddedDashboard.on('tileClicked', function (event) { console.log('You will never see me', event); });
embeddedDashboard.on('tileClicked', function (event) {
console.log('Or me!');
});
embeddedDashboard.off('tileClicked');