Vue 2.0プログレッシブウェブアプリケーションをQuasar Frameworkとしています。メニューアイテムをクリックすると、レイアウトの左のスロットに引き出しを閉じるようにしています。
これは、コンポーネントスクリプトHome.ts
です:
$refs: {
layout: any
};
:このように、
import Vue from 'vue';
import Component from 'vue-class-component';
import {
QIcon,
QLayout,
QList,
QListHeader,
QItem,
QItemMain,
QItemSide,
QToolbar,
QToolbarTitle,
} from 'quasar';
@Component({
name: 'Home',
components: {
QIcon,
QLayout,
QList,
QListHeader,
QItem,
QItemMain,
QItemSide,
QToolbar,
QToolbarTitle,
}
})
export default class Home extends Vue {
$refs: {
layout: QLayout // Cannot find name 'QLayout'
};
public newPainting() {
this.$refs.layout.toggleLeft();
this.$router.push(`painting/new`);
}
}
これが原因Cannot find name 'QLayout'
エラーのコンパイルされませんが、私はany
に$refs.layout
の種類を変更するとき、それは動作します
@Component()
デコレータで使用されているので、なぜQLayout
が見つからないのか混乱しています。
このコンポーネント(あなたがレイアウトを骨格にクエーサー-CLIを使用する場合、ほとんどデフォルトの1から取ったあなたが得る)ためHome.vue
ファイルされる:
<template>
<q-layout ref="layout">
<q-toolbar slot="header">
<!-- opens drawer below-->
<button class="hide-on-drawer-visible" @click="$refs.layout.toggleLeft()">
<q-icon name="menu"></q-icon>
</button>
<q-toolbar-title>
echroma
</q-toolbar-title>
</q-toolbar>
<!-- Left Side Panel -->
<div slot="left">
<q-list no-border link inset-delimiter>
<q-list-header>Menu</q-list-header>
<q-item @click="newPainting()">
<q-item-side icon="add_to_photos" />
<q-item-main label="New Painting" sublabel="Start evolving a new painting!" />
</q-item>
</q-list>
</div>
<router-view />
</q-layout>
</template>
<script>
import Home from './Home'
export default Home
</script>
<style>
</style>
はQLayout
はないだろう、なぜ何らかの理由がありますクラス宣言の内側からアクセスできますか?
ありがとうございました!私が ':'を使っていた理由は、[this link](https://github.com/HerringtonDarkholme/av-ts/wiki/FAQ#2-property-reification)のためです。あなたの答えを正しく記入するのに十分な担当者がいません。 – Fiberwire