根据 alpine js 中的另一个条件切换 x-data

Toggling x-data based on another conditional in alpine js

我正在创建一个 blade 组件,我想将工具提示切换为仅在左侧边栏关闭时显示在图标上。

看起来像这样

// layouts.app
<div x-data="{leftSidebarOpen:false}">
       // some designs
       <div>
            // adding blade component
            <x-menu-item/>
       </div>

<div>   

// inside blade component
@props=(['title'=>'page title'])
<div x-data="{tooltip: '{!! $title !!}'   }" x-tooltip.placement.right="tooltip">

      //icon
</div>

我还在努力学习javascript所以如何在alpine中写这个函数还是有点迷惑。在文档中找到这个,这可能对任何更精通的人都有帮助 https://alpinejs.dev/directives/data

我很想去

If leftSidebarOpen === true for the tooltip:'' else if the leftSidebarOpen === false than tooltip='{!! $title !!}'

非常感谢任何有关如何解决此问题的见解,或者可能是实现相同目标的更好方法。如果菜单展开,只是试图让工具提示不显示在图标上。

对于此任务,您希望使用 getter returns 一些基于某些条件的数据,您还可以访问 x-data 属性中定义的数据。在 x-menu-item 子组件中,我们可以访问 leftSidebarOpentooltip 数据,因此我们可以定义一个 getTooltip getter,它检查 [=13] 的值=] 和 returns tooltip 如果它是 false,否则为空字符串。

<div x-data="{tooltip: '{!! $title !!}',
              get getTooltip() {return leftSidebarOpen ? '' : this.tooltip}}" 
     x-tooltip.placement.right="getTooltip">
  //icon
</div>

请注意,在 getter 中,我们必须使用 this.tooltip 来访问 x-data 中定义的数据。