我正在尝试学习Vue.js,并来到一个练习示例,在该示例中,我需要实现一个自定义指令,使虱子“ v-on”工作。这意味着我需要捕获自定义指令上的click事件并调用一个方法。
我在想的模板。
<template>
<h1 v-my-on:click="alertMe">Click</h1>
</template>
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何在自定义指令中捕获click事件。请原谅下面的笨拙代码。
<script>
export default {
methods: {
alertMe() {
alert('The Alert!');
}
},
directives: {
'my-on': {
bind(el, binding, vnode) {
console.log('bind');
el.addEventListener('click',()=>{
console.log('bind');
vnode.context.$emit('click');
});
},
}
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
谁能帮助我了解其运作方式?我没有找到类似例子的任何例子。
我正在尝试使用同一个表的随机 id 为 parent_id 列设置种子,或者让它为空。
这我认为它会起作用:
...
'parent_id' => $faker->boolean() ? Page::all()->random()->id : null,
...
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
You requested 1 items, but there are only 0 items available.
Run Code Online (Sandbox Code Playgroud)
有谁知道如何做到这一点?
更新1:
使用伪动漫答案我尝试了流动:
$factory->define(Page::class, function (Faker\Generator $faker) {
...
$parent_id = null;
...
$has_parent = $faker->boolean(50);
Log::debug('$has_parent' . $has_parent);
if ($has_parent) {
$parents = Page::all();
Log::debug('$parents' . count($parents));
if ($parents->isEmpty()) {
Log::debug('isEmpty');
$parent_id = null;
} else {
Log::debug('$parents->random()' . print_r($parents->random(), true));
$parent_id = $parents->random()->id;
}
}
return [
...
'parent_id' => $parent_id, …Run Code Online (Sandbox Code Playgroud)