如何在 Alpine.js 组件中获取 data-attribute 的值?

How can I get the value of a data-attribute in an Alpine.js component?

我正在尝试从我的组件中获取 data-countdown 值(日期和时间)到 x-data,以便我可以从中创建一个倒数计时器。

我浏览了文档,但找不到任何可以帮助我获得价值的东西。我对输入值使用 x-model,但由于这不会改变,我只需要访问该值。

我用 x-bind 尝试过,但没有成功。

这是一个 blade 文件。我在 roots-sage.

中使用它
<div class='countdown' x-bind:data-countdown="{ 'time': {{ $class[time][day] }} {{ $class[time][time] }} }">
</div>

这是我的 JavaScript 代码。

window.singleGroupClass = function () {
  return {
    data: 'hey',
    time: console.log(this.el),
    countdown() {
      console.log(this);
    },
  }
}

使用 Alpine.js 实现整个过程的方式可能类似于以下内容。

请注意,您需要在 {{ $class[time][day] }} {{ $class[time][time] }}) 周围加上引号。

<div class='countdown' x-data="singleGroupClass({ 'time': '{{ $class[time][day] }} {{ $class[time][time] }}' })">
</div>
<script>
  window.singleGroupClass = function (seedData) {
    return {
      time: seedData.time,
      countdown() {
        console.log(this);
      },
    }
  }
</script>

或者,如果您绝对需要使用 data-countdown 属性中的值:

<div class='countdown' x-data="{ time : $el.dataset.countdown }" data-countdown="{{ $class[time][day] }} {{ $class[time][time] }}">
  <div x-text="time"></div>
</div>

请注意,data-countdown="{ 'time': '{{ $class[time][day] }} {{ $class[time][time] }}' }" 很难做到,因为您需要将其解析为 JSON(可能)。

尝试,在Html

<div x-data="alpineComponent()" id="reviews" data-reviews='<?= $dataObj ?>'></div>

在 Js

{
  return {
    reviews: JSON.parse(document.getElementById('reviews').dataset.reviews)
  }
}