29 Matching Annotations
  1. Mar 2023
    1. php artisan event:generate

      两种方法, 第一种,先在EventServiceProvider中把键值对配好,用 php artisan event:generate统一生成; 第二种,分别用artisan去生成event和listener,再去写键值对。

  2. Dec 2022
    1. public Post $post;

      路由模型绑定,简化mount的写法。 Route::get('/post/{post}', ShowPost::class);

    2. Livewire attempts to mimic this behavior through its mount method

      Livewire 组件中的 mount 方法在其参数方面就像控制器方法一样。

    3. Rendering Components
      1. 布局
      2. 路由参数,mount()模拟控制器接收路由参数
    1. As you can see, x-id accepts an array of ID names. Now any usages of $id() within that scope, will all use the same ID. Think of them as "id groups".

      x-id接收一个数组,该作用域下的所有$id会产生相同的id值,可以把x-id理解成一个id group

    1. Example:

      派发公共事件时应该必须要注意的事情

    1. Because of this difference in behavior, x-if should not be applied directly to the element, but instead to a <template> tag that encloses the element. This way, Alpine can keep a record of the element once it's removed from the page.

      一般使用在template上,不支持x-transition

    1. <template x-teleport="body" @click="open = false"> <div x-show="open"> Modal contents... (click to close) </div> </template>

      这部分点击后会被传送走,传送到x-data以外,脱离了alpine的实际控制区,但是点击外部的dom,还是会执行关闭动作。 首先,它阻止了x-data内组件的冒泡。 其次,它创建了一个事件的副本,并重新进行了派发。

    1. <div x-data="{ label: 'Hello' }" x-effect="console.log(label)"> <button @click="label += ' World!'">Change Message</button></div>

      监视器,组件属性值发生变化时运行。 1. 组件载入时运行一次; 2. 组件值发生变化时运行一次。

    1. <div @scroll.window.throttle="handleScroll">...</div>

      节流阀,laravel的登录页常常需要这个功能,防止恶意登录尝试,在限定的时间内,只能执行一次

    2. debounce

      livewire也有这个debounce

    3. <div x-data @foo="alert('Button Was Clicked!')"> <button @click="$dispatch('foo')">...</button></div>

      对于自定义事件,必须加上@click="$dispatch('foo')"

    4. x-on

      x-on是绑定事件的,比如click,x-bind是绑定属性的(或者绑定一切?),比如placeholder

    1. <div :class="{ 'hidden': ! show }">

      class的存在与否,取决于布尔值

    2. <div x-data="{ placeholder: 'Type here...' }"> <input type="text" x-bind:placeholder="placeholder"></div>

      设置placeholder

      <div x-data="{ placeholder: 'Type here...' }"> <input type="text" x-bind:placeholder="placeholder"> </div>
    1. Re-usable Data

      数据复用

    2. <div x-show="isOpen">

      诚如上面所说,isOpen是一个get,运行isOpen就会显示isOpen中的值,仅此而已。 上面也说了,可以不加()

    3. JavaScript getters are handy when the sole purpose of a method is to return data based on other state.

      有点类似mysql的view。 1. 当运行get方法时就是get方法‘ 2. 当为set方法赋值时,会运行set方法 https://www.jianshu.com/p/58778e4d96d1

    1. Sometimes you may want to access the native browser event object inside your own code. To make this easy, Alpine automatically injects an $event magic variable:

      $event绑定本机浏览器事件对象 <button @click="$event.target.remove()">Remove Me</button>

    1. <button x-data="{ label: 'Click Here' }" x-text="label"></button>

      x-data可以和其他指令在同一节点上显示,外面不用再包div

    1. more fine-grained control over the transitions

      对transitions实行更加细粒度的控制

    2. x-if

      x-if与x-show的不同: 1. 彻底remove; 2. 只能用在templete上

    3. :class="{ 'hidden': ! open }"

      class类的存在与否取决于一个js变量,这是常常需要的功能,这里就有了x-bind的语法糖

      <div x-data="{ open: true }"> <span :class="{ 'hidden': ! open }">...</span> </div>