Ember: запретить запуск ссылки при нажатии на действие внутри нее

#javascript #ember.js

#javascript #ember.js

Вопрос:

У меня есть таблица, в которой я хочу, чтобы пользователи переходили к определенным элементам при нажатии на строку, но строка может содержать другие элементы (например, флажки), которые запускают действия, но не запускают навигацию (например, gmail).).

Моя структура такая:

 {{#each player in controller}}
  {{#link-to "player" player.uid tagName="tr"}}
    <td>
       {{input action="select" type="checkbox" checked=selected bubbles=false}}
    </td>
    <td>
      {{player.name}}
    </td>
    ...
  {{/link-to}}
{{/each}}
  

Моя проблема в том, что презираю bubbles=false (как указано в спецификации), link-to срабатывает и переходит на другой маршрут. Есть идеи?

Ответ №1:

Это работает, когда вы присоединяете действие к элементу, помощник ввода не поддерживает action='foo' таким образом. Он даже не попадает вообще.

http://emberjs.jsbin.com/lugatite/1/edit

Вам нужно будет установить свой собственный флажок или просто указать отмеченное значение в вашем контроллере

 App.MyCheckBox = Ember.Checkbox.extend(Ember.TargetActionSupport, {
    target: Ember.computed.alias('controller'),
    action: 'save',
    actionContext: Ember.computed.alias('context'),
    click: function(el) {
      this.triggerAction(); 
      el.stopPropagation();

    }
});
  

http://jsbin.com/lugatite/5/edit

Комментарии:

1. Это работает для прикрепления действий, но ссылка на все еще срабатывает, см.: jsbin.com/lugatite/4/edit

2. упс, извините, я зациклился на том факте, что вы не смогли сделать это с помощью реализации по умолчанию, я обновил ответ, который должен сработать для вас.