Ответ 1
Также вы можете добавить параметр bubbles=false
в тег action
(см. http://emberjs.com/api/classes/Ember.Templates.helpers.html#toc_event-propagation)
У меня есть этот код, который при щелчке по значку редактирования редактирует действие, открывающее модальное, но в то же время клик распространяется на представление под ним (personView). Я хочу, чтобы действие выполнялось и прекращалось распространение.
Единственное решение, о котором я могу думать, - сделать значок-отредактировать его собственное представление и остановить распространение щелчка, вернув false в методе click. Есть ли другой способ сделать это, не делая другого представления?
HBS:
{{#view Blocks.PersonView}}
<span class="inline pull-right icon-edit" {{action 'modalOpen' 'modifyPersonPopup' 'modifyPerson' this}}></span>
<p class="inline pull-left person-name">{{firstNameDelayed}}</p>
{{/view}}
Также вы можете добавить параметр bubbles=false
в тег action
(см. http://emberjs.com/api/classes/Ember.Templates.helpers.html#toc_event-propagation)
Попробуйте изменить действие:
modalOpen: function {
//code of your action
return false;
}
Это сработало для меня в аналогичной ситуации
Я смог перехватить клик, используя jQuery, но логика слишком противная. Эта логика также останавливает работу помощника действий. Я предпочел бы остаться с решением, которое использует представление ember, чтобы не распространять клик.
Отвратительное решение внутри personView:
Blocks.PersonView = Ember.View.extend({
classNames: ['event-person-block', 'person', 'inline'],
classNameBindings: ['personActive'],
// Onclick toggles person selection.
click: function () {
this.get('controller.parentController').send('personClicked',this.get('controller.content.id'))
}
didInsertElement: function() {
this.$().find(".icon-edit").click(function(e) {
e.stopPropagation()
})
}
})
Более чистое решение, использующее представление, которое обертывает интервал редактирования значков:
Blocks.EditPersonIcon = Ember.View.extend({
click: function () {
return false
}
})