标签: alpine.js

将 Alpine.js x-transitions 转换为 Vue.js 转换类?

所以,我有一个轻微的概念问题。我也承认我主要是一名后端开发人员和松散的前端开发人员,希望学习更好的 UI/UX 原则/框架等,如果这是一个相对简单的问题,请提前道歉。

我有以下x-transition在 Alpine.js 中构建的示例:

<div
    x-show="open"
    x-transition:enter="transition ease-out duration-100"
    x-transition:enter-start="transform opacity-0 scale-95"
    x-transition:enter-end="transform opacity-100 scale-100"
    x-transition:leave="transition ease-in duration-75"
    x-transition:leave-start="transform opacity-100 scale-100"
    x-transition:leave-end="transform opacity-0 scale-95"
>...</div>
Run Code Online (Sandbox Code Playgroud)

我试图将其转换为 Vue.js 中的过渡动画

<transition
    name="custom-classes-transition"
    enter-class="transition ease-out duration-100"
    enter-active-class="transform opacity-0 scale-95"
    enter-to-class="transform opacity-100 scale-100"
    leave-class="transition ease-in duration-75"
    leave-active-class="transform opacity-100 scale-100"
    leave-to-class="transform opacity-0 scale-95"
>
    <div v-if="open>

    </div>
</transition>
Run Code Online (Sandbox Code Playgroud)

但是,唉,什么都没有。该怎么办?

javascript vue.js alpine.js

4
推荐指数
1
解决办法
1495
查看次数

在 alpine.js 中结合 x-show 和 x-text 切换

我是 alpine.js 的新手,我需要切换元素的innerText,有谁知道我可以结合显示元素和更改另一个元素的innerText吗?这是我的代码

<div x-data="{ numOrder: false, delNumOrder: 'Remove your order number' }">
  <button x-on:click="numOrder = !numOrder">
  Insert your order number</button>
  <input x-show="numOrder" type="text" placeholder="Order Number">
</div>
Run Code Online (Sandbox Code Playgroud)

我需要通过delNumOrder覆盖按钮文本,我尝试使用x-text

<button x-on:click="numOrder = !numOrder" x-text="delNumOrder = !delNumOrder">
Run Code Online (Sandbox Code Playgroud)

我可以使用类似的东西吗?

<div x-data="{ numOrder: false, delNumOrder = delNumOrder ? 'Insert your order number' : 'Remove your order number' }"></div>
Run Code Online (Sandbox Code Playgroud)

web-frontend alpine.js

4
推荐指数
1
解决办法
2352
查看次数

alpineJS 中是否可以引用外部js 文件中的代码?

x-data我有一个 Alpine JS 模板,我想从数组中引用它。我目前已在 HTML 文件底部的标签中声明了该内容<script>,并且我想将其移动到外部文件中。如果我创建该文件并将其与<script src='path/to/file.js'>我的组件链接,则会停止工作。

有效的示例:


<div x-data="{items}">
  <template x-for="(item, index) in items" :key="index">
    <a :href="item.link" x-text="item.text"></a>
  </template>
</div>
<script>
  const items = [
    { link: 'foo.com', text: 'foo' },
    { link: 'bar.com', text: 'bar' },
  ]
</script>
Run Code Online (Sandbox Code Playgroud)

不起作用的示例,其中external.js具有相同的变量赋值

<div x-data="{items}">
  <template x-for="(item, index) in items" :key="index">
    <a :href="item.link" x-text="item.text"></a>
  </template>
</div>
<script src="external.js"></script>
Run Code Online (Sandbox Code Playgroud)

以及 external.js 文件的内容:

import 'alpinejs'

window.onload = () => {

console.log('loaded') // This logs in the console …
Run Code Online (Sandbox Code Playgroud)

javascript alpine.js

4
推荐指数
1
解决办法
3424
查看次数

Alpine.js - 如何自动隐藏 Flash 消息?

如何在 Alpine.js 中自动隐藏 Flash 消息?(假设我希望它在 4 秒后消失)

<div class="flex mx-auto justify-between left-0 bottom-0 z-40">
  <div class="flex mr-6 fixed left-8 bottom-8 overflow-hidden">
    <div class="bg-white rounded-lg border-gray-300 border p-4 shadow-xl">
      <div class="flex flex-row">
        <div class="mx-2">
          <svg width="24" height="24" viewBox="0 0 1792 1792" fill="#44C997" xmlns="http://www.w3.org/2000/svg">
            <path d="M1299 813l-422 422q-19 19-45 19t-45-19l-294-294q-19-19-19-45t19-45l102-102q19-19 45-19t45 19l147 147 275-275q19-19 45-19t45 19l102 102q19 19 19 45t-19 45zm141 83q0-148-73-273t-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273zm224 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 …
Run Code Online (Sandbox Code Playgroud)

javascript alpine.js

4
推荐指数
1
解决办法
3316
查看次数

跟踪 alpine.js 中的输入变化

我正在学习 alpine.js 并尝试捕获用户输入值。我使用了“x-on:input”,但它没有调用该函数

下面是简单的表单输入

 <input type="email" class="form-control" x-on:input.debounce="validateEmail($event)" x-model="userEmail" id="email" aria-describedby="emailHelp" placeholder="Enter email">
Run Code Online (Sandbox Code Playgroud)

这是我的index.js 中的基本方法

function validateEmail(event){
console.log(userEmail);

}
Run Code Online (Sandbox Code Playgroud)

该函数没有被调用。

添加示例stackblitz

请指导

谢谢施鲁蒂·奈尔

javascript alpine.js

3
推荐指数
1
解决办法
2万
查看次数

如何正确向 Alpine JS x-for 模板添加条件类?

我试图迭代一个循环,并向 4 个项目以上的每个元素添加一个条件类,以使用 tailwindcss 实现一些响应式样式。

以前我在其他类中添加了循环,效果很好:

<template x-for="(card, index ) in cards" :key="index">
    <div class="w-40 h-64"
         x-modal="card"
         :class="card.someOtherClass"
    >
        <div class="card-content" :id="'card-' + card.id">
        </div>
    </div>
</template>
Run Code Online (Sandbox Code Playgroud)

但随后我需要添加一个条件语句来检查项目数量是否超过 4。我查看了之前提出的以下问题:

AlpineJS:如何有条件地将类添加到元素?

这建议使用{ 'class-name': statement },所以我做了以下操作:

<template x-for="(card, index ) in cards" :key="index">
    <div class="w-40 h-64"
         x-modal="card"
         :class="[card.someOtherClass,
             {'bg-green-500':  index > 3 },
          ]"
        >
        <div class="card-content" :id="'card-' + card.id">
        </div>
    </div>
</template>
Run Code Online (Sandbox Code Playgroud)

但我将其<div class="w-40 h-64 some-other-class [object Object]">传递给浏览器中的相关 HTML。如何从该对象获取相关值?

javascript laravel alpine.js

3
推荐指数
2
解决办法
2万
查看次数

如何在页面加载时隐藏闪烁的对话框内容?

在 tailwindcss 的 Alpinejs 页面上,我使用通过单击按钮打开的模式。问题是,在加载页面时,我看到闪烁的对话框内容。我尝试将隐藏类设置为模态窗口,并在 init 方法末尾将 isPageLoaded 变量设置为 true

<div class="overflow-auto border-2 border-grey-900" x-data="app()" x-init="appInit()">

    <div class="w-full h-full">
        <button
            type="button"
            class="bg-transparent border border-gray-500 hover:border-indigo-500 text-gray-500 hover:text-indigo-500 font-bold py-2 px-4 rounded-full"
            @click="showModal = true"
        >Open modal
        </button>
    </div>
    <!--Overlay-->

    <div class="overflow-auto w-full h-full hidden" style="background-color: rgba(0,0,0,0.5)" x-show="showModal" :class="{ 'fixed inset-0 z-10 flex items-center justify-center': showModal, 'visible' : isPageLoaded }">

...
<script>

    function app() {
        return {
            showModal : false,
            isPageLoaded : false,

            appInit: function () {
                console.log('appInit::')
                this.isPageLoaded= true
            }, …
Run Code Online (Sandbox Code Playgroud)

tailwind-css alpine.js

3
推荐指数
1
解决办法
3237
查看次数

Alpine.js - 显示输入字段并同时添加焦点

我有一个按钮,当用户单击它时,应该显示一个输入元素并且它应该具有焦点。

我试过这个:

<div x-data="{ show: false }">

    <input x-show="show" type="text" id="input" x-ref="input" />

    <button @click="show = !show; $refs.input.focus();">Button</button>

</div>
Run Code Online (Sandbox Code Playgroud)

但这不起作用。

javascript alpine.js

3
推荐指数
1
解决办法
4942
查看次数

Livewire-Laravel-Alpine:在验证错误时发出事件,包括 errorbag​​ 上的所有错误

我正在开发 Laravel、Livewire 和 AlpineJs 项目,验证通过后可以触发事件,如下代码所示。但是当发生验证错误时,下面的代码$this->validate();将不会运行。

如何发出验证错误事件,以便可以在刀片文件中捕获它以显示如下小通知:

注册.blade.php

<span x-data="{ open: false }" x-init="
    @this.on('validation-error', () => {
        if (open === false) setTimeout(() => { open = false }, 2500);
            open = true;
        })"
    x-show.transition.out.duration.1000ms="open" style="display: none;" class="text-red-500">Error saving!</span>
Run Code Online (Sandbox Code Playgroud)

注册.php

class Register extends Component
{
    public $name = '';
    public $email = '';
    public $password = '';
    public $password_confirmation = '';

    protected $rules = [
        'name' => 'required|min:2',
        'email' => 'required|email|unique:users',
        'password' => 'required|min:6|same:password_confirmation',
    ];

    public function register()
    { …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-livewire alpine.js

3
推荐指数
1
解决办法
2565
查看次数

如何使用 mix 设置 Alpine.js 3

我在新项目中开始使用 Alpine.js v3 时遇到问题。这是我的 package.json 和 Alpine 设置:

  "devDependencies": {
    "laravel-mix": "^6.0.19"
  },
  "dependencies": {
    "alpinejs": "^3.0.6"
  }
Run Code Online (Sandbox Code Playgroud)
import Alpine from 'alpinejs'

window.Alpine = Alpine
window.Alpine.start()

Alpine.data('demo', () => ({
    open: false,

    toggle() {
        this.open = !this.open
    }
}))
Run Code Online (Sandbox Code Playgroud)

驱动此标记:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Demo</title>
    <script src="assets/app.js"></script>
  </head>
  <body>
    <div x-data="demo">
      <button @click="toggle">Expand</button>

      <div x-show="open">Content...</div>
    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我使用 laravel-mix 构建我的 javascript:

// webpack.mix.js

let mix = …
Run Code Online (Sandbox Code Playgroud)

node-modules laravel-mix alpine.js

3
推荐指数
1
解决办法
6639
查看次数