Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vue JS Vuetify菜单名为“插槽”;激活剂;未绑定到模板,但将转到;“违约”;_Javascript_Node.js_Vue.js_Babeljs_Vuetify.js - Fatal编程技术网

Javascript Vue JS Vuetify菜单名为“插槽”;激活剂;未绑定到模板,但将转到;“违约”;

Javascript Vue JS Vuetify菜单名为“插槽”;激活剂;未绑定到模板,但将转到;“违约”;,javascript,node.js,vue.js,babeljs,vuetify.js,Javascript,Node.js,Vue.js,Babeljs,Vuetify.js,我似乎无法让Vuetify v-menu的示例代码在我的PWA应用程序中工作,但它在小提琴中正常工作(例如) 问题是:激活器插槽内容没有出现 通过调试vuetify源代码,我发现激活器模板出现在“默认”窗口(所有隐藏内容都在该窗口中)下,而不是在命名的激活器窗口(可见按钮/单击区域应该在该窗口中) 我已经将我的应用程序简化到了最简单的部分(最初我有动态组件、表单、API等),所以我将其简化为顶级v-app元素中的一个v-menu,并删除了所有路由器、商店和其他插件。它尽可能简单,但仍然不起作用。

我似乎无法让Vuetify v-menu的示例代码在我的PWA应用程序中工作,但它在小提琴中正常工作(例如)

问题是:激活器插槽内容没有出现

通过调试vuetify源代码,我发现激活器模板出现在“默认”窗口(所有隐藏内容都在该窗口中)下,而不是在命名的激活器窗口(可见按钮/单击区域应该在该窗口中)

我已经将我的应用程序简化到了最简单的部分(最初我有动态组件、表单、API等),所以我将其简化为顶级v-app元素中的一个v-menu,并删除了所有路由器、商店和其他插件。它尽可能简单,但仍然不起作用。fiddle和我的本地应用程序之间唯一的区别就是构建系统

我还尝试通过按钮更改/删除插槽道具和上的绑定,这会修改命名插槽在Vuetify(或Vue)中的内部表示方式。但是,无论是否使用道具,verison都不能正确绑定指定的插槽

我还更新和重建了npm(在另一个SO中建议),因此我使用最新的Vue 2.6.10和Vuetify 1.5.14

我还确保我正在包装
(但这发生在我安装Vuetify插件时),正如其他SO中所述

我还读了一些在调试中有用的东西

我已经尝试将
slot=activator
直接放在HTML标记上,而不是使用模板

我可能尝试了十几种其他方法(最初我只是对v-on的
on
有一个问题,但这是由于这个潜在的问题)

这些是我的简化文件-都是非常标准的:

App.vue(带/不带事件绑定道具)

插件/vuetify.js

import Vue from 'vue'
import Vuetify from 'vuetify/lib'
import 'vuetify/src/stylus/app.styl'

Vue.use(Vuetify, {
  iconfont: 'md',
})
index.html

当它运行时,我在
node_modules/vuetify/src/components/VMenu/mixins/menu generators.js中设置了一个断点,它在这里返回null,因为没有设置任何类型的插槽:

    genActivator: function genActivator() {
        if (!this.$slots.activator && !this.$scopedSlots.activator) return null;
在我的应用程序中,Chrome debug inspector显示
v-btn
default
$slot
下的
p
标签旁边,但它应该在自己的标签下

在工作小提琴中相比之下,在调试相同的功能时,当我包括v-on=on事件绑定时,我会在
$scopeSlots
下看到
激活器
节点,如果没有,则在
$slots
下看到。而且效果很好


为什么
v-slot=activator
语句不能生效?

在阅读了这个答案后:我发现旧的(Vue v2.6之前的)语法在我精简的应用程序中工作正常,然后在我的原始组件中也正常工作

<template slot="activator" slot-scope="{ on }">

因此,我意识到我的应用程序一定还在运行旧版本,即使我在完成npm更新后在Vui中使用了“构建”选项

我刚刚停止并重新启动了
vue cli service service
命令(在UI中),现在一切正常

所以我猜我仍然在运行Vue v2.5.22,而VSCode的构建只是热加载了一些部分


因此,教训是:在执行npm更新后,关闭并重新启动所有内容,构建服务器、VSCode调试器、chrome实例。

在我的例子中,我的构建链中有一个依赖项,它阻止了vue。
    genActivator: function genActivator() {
        if (!this.$slots.activator && !this.$scopedSlots.activator) return null;
<template slot="activator" slot-scope="{ on }">