ember.js 如何在span标签中 Package handlebars表达式,并使span标签可点击?

vpfxa7rd  于 2022-11-05  发布在  其他
关注(0)|答案(2)|浏览(113)

datePick字符串是按钮内部的一个计算属性,您可以单击datePick值来触发事件,但单击按钮内部datePick值之外的位置不会触发事件。
我试着把它包在一个跨度内,并给出宽度:100%,但仍然无法单击

<span>
      {{capitalize datePick}}
</span>

我希望它占据整个空间内的一个按钮,使它可以点击无处不在。

hjqgdpho

hjqgdpho1#

在Ember Octane(3.13预览版,3.14+)中,你会想做这样的事情(基于@tehprofessor的回答)
在模板中:

<span {{on 'click' this.showDatePicker}}>
  {{capitalize this.datePick}}
</span>

但是,要使用语义HTML(并改进可访问性),您确实需要用 * button * 来表示可单击内容。

<button {{on 'click' this.showDatePicker}}>
  {{capitalize this.datePick}}
</button>

然后在组件的js:

import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';

export default class MyComponent extends Component {
  @tracked datePick = '';

  @action showDatePicker(e) {
    e.preventDefault();

    console.log('show the date picker');
  }
}
ax6ht2ek

ax6ht2ek2#

您是否尝试过添加以下内容:

<span {{action "showDatePicker"}}>
  {{capitalize datePick}}
</span>

并在组件中使用:

import Component from '@ember/component';

export default Component.extend({
  actions: {
    showDatePicker() {
      // Do some stuff to present the date picker.
      console.log('Showing date picker, eh?');
    }
  }
});

action帮助器默认情况下假定该事件是 click 事件,如文档所示:
https://guides.emberjs.com/release/templates/actions/#toc_specifying-the-type-of-event

相关问题