我使用vue-cli3创建了一个项目,并包含TypeScript
我的src / app.vue:
<template>
<div id="app">
<hello-world msg="test"/>
</div>
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';
import HelloWorld from '@/components/HelloWorld';
@Component({
components: { HelloWorld },
})
export default class App extends Vue {}
</script>
Run Code Online (Sandbox Code Playgroud)
编译器在“找不到模块'@ / components / HelloWorld'”中引发错误;
组件HelloWorld存在。
但是,如果我删除lang="ts"或添加了.vue扩展名,那么一切都可以正常编译。在我的tsconfig.json中,我有
"paths": {
"@/*": [ "src/*" ]
},
Run Code Online (Sandbox Code Playgroud)
这是问题tsconfig.json还是其他?
我按照本教程使用TypeScript设置了包含模块的Vuex存储.
到目前为止,我有:
vuex/types.ts:
export interface RootState {
version: string;
}
Run Code Online (Sandbox Code Playgroud)
vuex/user-profile.ts:
import { ActionTree, Module, MutationTree } from 'vuex';
import { RootState } from './types';
interface User {
firstName: string;
uid: string;
}
interface ProfileState {
user?: User;
authed: boolean;
}
const state: ProfileState = {
user: undefined,
authed: false,
};
const namespaced: boolean = true;
export const UserProfile: Module<ProfileState, RootState> = {
namespaced,
state,
};
Run Code Online (Sandbox Code Playgroud)
store.ts:
import Vue from 'vue';
import Vuex, { StoreOptions …Run Code Online (Sandbox Code Playgroud) 我了解如何使用 Vuetify 的v-tooltip和包装组件的工具提示。但是,我不太确定如何将激活按钮放在外面。
例如我有这个(非工作代码):
<v-tooltip bottom
:activator="$refs.filterBtn"
>
Filter displayed items
</v-tooltip>
<v-btn
ref="filterBtn"
icon
@click="isFilter = !isFilter"
>
<v-icon>fa-filter</v-icon>
</v-btn>
Run Code Online (Sandbox Code Playgroud)
我也尝试使用 propactivator没有v-bind:相同的结果
想法:我希望将按钮与工具提示分开放置,以便运行单元测试。测试时,shallowMount剥离里面的任何东西<v-tooltip>,这样我就无法测试按钮。问题是我不知道如何使工具提示在悬停时显示(就像包裹时一样),我不想用@click.
编辑:这是代码笔
我试图以编程方式设置 v-select 值,但是关联的 @change 事件不会触发。如果我手动选择该选项,则事件会按预期触发。
模板:
<div id="app">
<v-app dark>
<v-select
v-model="currentItem"
:items="items"
@change="itemChanged"
/>
</v-app>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
Vue.use(Vuetify);
var vm = new Vue({
el: "#app",
methods: {
itemChanged(item) {
console.log('item changed',item);
}
},
data: {
currentItem: '',
items: [
{ text: "Name", value: 'name' },
{ text: "Number", value: 'number' },
{ text: "Inputs", value: 'inputs' }
]
},
mounted() {
setTimeout(() => {
this.currentItem = 'inputs';
}, 2000);
}
});
Run Code Online (Sandbox Code Playgroud)
除了在以编程方式设置值时手动调用该函数之外,是否有人有任何解决方案?