小编Bou*_*him的帖子

删除 Vue Router 中的尾部斜杠

const routes = [
  {
    path: '/:year',
    component: Nav,
    children: [
      { path: '', name: 'test', component: Test }
    ]
  }
];
Run Code Online (Sandbox Code Playgroud)
<!-- /2018/ -->
<router-link :to="{name: 'test', params: {year: 2018}}"></router-link>
Run Code Online (Sandbox Code Playgroud)

如果有孩子,我想删除添加到路由器链接创建的路径的尾部斜杠。

vue.js vue-router

6
推荐指数
1
解决办法
3374
查看次数

vue如何设置嵌套对象的默认道具

我的道具是这样的

house = {
  kitchen:{
    sink: ''
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试过类似的事情,但没有成功。

props: {
    house: {
        type: Object,
        default: () => {
            kitchen : {
                sink: ''
            }
        }
    }
},
Run Code Online (Sandbox Code Playgroud)

如何为此类对象设置默认道具?

javascript vue.js vue-component vuejs2

6
推荐指数
2
解决办法
1万
查看次数

如何仅使用 Vue.js 更改背景颜色的样式

import Vue from 'vue'
import App from './App'
import BootstrapVue from 'bootstrap-vue'
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'




Vue.config.productionTip = false
Vue.use(BootstrapVue);


/* eslint-disable no-new */
new Vue({
  el: '#app',
  components: { App },
  template: '<App/>'
})
Run Code Online (Sandbox Code Playgroud)

import Vue from 'vue'
import App from './App'
import BootstrapVue from 'bootstrap-vue'
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'




Vue.config.productionTip = false
Vue.use(BootstrapVue);


/* eslint-disable no-new */
new Vue({
  el: '#app',
  components: { App },
  template: '<App/>'
})
Run Code Online (Sandbox Code Playgroud)

我尝试使用该命令使用 vue 绑定样式更改元素的背景颜色, v-bind:style='{backgroundColor : color} 但它不是全高,即使我尝试删除 CSS 上 body …

css vue.js vue-component vuejs2 bootstrap-vue

6
推荐指数
1
解决办法
5万
查看次数

如何在 Vue.js 中使用带有嵌套属性的 v-model

我创建了一个表单,我试图了解如何在 Vue.js 中使用带有嵌套属性的 v-model

这是我的模板的代码,正如您所看到的,我正在尝试引用嵌套属性,如下所示:form.dobDate ,但是如何引用Mountedwatch中的属性(dobDatedobMonthdobYear)?这样我输入的任何内容都会在页面刷新时保留在那里吗?

<template>
  <div>
    <b-form novalidate>
      <b-form-select name="dobDate" id="dobDate" v-model="form.dobDate" :options="optionsDays"></b-form-select>

      <b-form-select name="dobMonth" id="dobMonth" v-model="form.dobMonth" :options="optionsMonths"></b-form-select>

      <b-form-input
        placeholder="Year of Birth"
        required
        autofocus
        class="form-control"
        name="year"
        id="year"
        min="0"
        max="2003"
        type="number"
        v-model="form.dobYear"
      ></b-form-input>

      <input type="text" v-model="name" />

      <b-button type="submit" variant="primary">Submit</b-button>
    </b-form>
    <b-card class="mt-3" header="Form Data Result">
      <pre class="m-0">{{ form }}</pre>
    </b-card>
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)

这是脚本代码:

<script>
export default {
  data() {
    return {
      name: "",
      form: {
        dobDate: { …
Run Code Online (Sandbox Code Playgroud)

html javascript vue.js vuejs2 bootstrap-vue

6
推荐指数
1
解决办法
9903
查看次数

Vuetify 右对齐按钮组

所以我有一组按钮,我希望它们位于页面的右侧,但是justify-end/justify='end'不起作用v-row

<!DOCTYPE html>
<html>

<head>
  <link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
  <link href="https://cdn.jsdelivr.net/npm/@mdi/font@3.x/css/materialdesignicons.min.css" rel="stylesheet">
  <link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
</head>

<body>
  <div id="app">
    <v-app>
      <v-container>
        <v-form>
          <v-row justify='end'>
            <v-col>
              <v-btn>Button 1</v-btn>
              <v-btn>Button 1</v-btn>
              <v-btn>Button 1</v-btn>
            </v-col>
          </v-row>
        </v-form>
      </v-container>
    </v-app>
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>
  <script>
    new Vue({
      el: '#app',
      vuetify: new Vuetify(),
    })
  </script>
</body>
Run Code Online (Sandbox Code Playgroud)

我看过这个问题,但是使用 text align 似乎很麻烦,我想知道是否有更好的解决方案?

html javascript vue.js vuejs2 vuetify.js

6
推荐指数
2
解决办法
3万
查看次数

Vue 3 Teleport 是否只能移植到 vue 之外?

Vue 3 有一个新的 Teleport 功能,它取代了 vue 2 中的 portal-vue 插件。但是,我发现不可能将组件移植到 vue 控制的地方(=在 vue 应用程序中)。它仅在移植到外部(主体、其他元素......)时有效。

const app = {
  template: `
  <div>
    <h1>App</h1>
    <div id="dest"></div>
    <comp />
  </div>`
}


Vue.createApp(app).component('comp', {
  template: `
  <div>
    A component
    <Teleport to="#dest">
      Hello From Portal
    </Teleport>
  </div>`
}).mount('#app')
Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/vue@3.0.0-rc.9/dist/vue.global.js"></script>

<div id="app"></div>
Run Code Online (Sandbox Code Playgroud)

如您所见,控制台甚至报告说需要已经渲染传送目标。但是我怎么能告诉 vue 先渲染哪个组件呢?在我的例子中,目标在传送前的 dom 中。

这在 portal-vue 中不是问题,而且非常令人失望,因为它使整个概念变得不那么可用。

vue.js vuejs3 vue-teleport

6
推荐指数
3
解决办法
1588
查看次数

设置方法未被调用

我使用(typescript、babel、linter)创建了一个入门项目vue ui。一切工作正常,但我不太明白如何使Composition APIsetup方法工作。它根本没有被调用(日志输出为空)这就是我被困住的地方。

  • vue:3.0.0-rc.10

  • vue-cli:4.5.4

    <script lang="ts">
     import { Options, Vue } from 'vue-class-component'
     import HelloWorld from './components/HelloWorld.vue'
    
     @Options({
       components: {
         HelloWorld
       },
       setup () {
         console.log('SETUP HERE')
       }
     })
     export default class App extends Vue {
       setup () {
         console.log('SETUP THERE')
       }
     }
     </script>
    
    Run Code Online (Sandbox Code Playgroud)

typescript vue.js vuejs3 vue-composition-api vue-script-setup

6
推荐指数
1
解决办法
4356
查看次数

如何在VueJS 3.0 中使用defineComponent 注册本地组件

VueJS 3.0 提供了定义组件的新语法

https://v3.vuejs.org/api/global-api.html#arguments-3)。

import { defineComponent, ref } from 'vue'

const HelloWorld = defineComponent(function HelloWorld() {
  const count = ref(0)
  return { count }
})
Run Code Online (Sandbox Code Playgroud)

如何使用传递函数在本地注册组件defineComponent

在旧样式中,您将components在组件定义对象中使用字段,如下所示:

import ComponentA from './ComponentA.vue'

export default {
  components: {
    ComponentA
  }
  // ...
}
Run Code Online (Sandbox Code Playgroud)

typescript vue.js vue-component vuejs3

6
推荐指数
1
解决办法
2091
查看次数

Vue组合API调用子组件方法

太长了;在 v2 中,this.$refs可以完成这项工作,但在 v3 组合 api 中我该如何做到这一点?

我正在尝试在Vue3中使用PrimeVue的CustomUpload功能,但是该API在上传文件后不会清除上传文件,我需要调用clear()父组件中的子组件的方法来清除文件并刷新按钮。

这是我的 App.vue

<template>
  <FileUpload
    name="upload"
    url="/"
    mode="basic"
    :auto="true"
    :maxFileSize="26214400"
    :fileLimit="1"
    :customUpload="true"
    @uploader="upload"
  />
  <Button name="lalaal">qweeq</Button>
</template>

<script>
import FileUpload from 'primevue/fileupload'

export default {
  setup() {
    const upload = e => {
      console.log('testing', e)
    }
    return { upload }
  },
  components: {
    FileUpload
  }
}
</script>
Run Code Online (Sandbox Code Playgroud)

谢谢

javascript vue.js primevue vuejs3 vue-composition-api

6
推荐指数
1
解决办法
4045
查看次数

如何通过 Composition API 和 TSX 模板在 Vue 3 中使用自定义事件处理程序?

我正在努力理解如何使用 TSX 模板处理 Vue 3 中的自定义事件。

考虑一个简单的父/子应用程序,其中子级向父级发送自定义事件:

const Child = defineComponent({
    emits: {
        boom: (x: number) => true,
    },
    setup(props, { emit }) {
        console.log("Child props", props)
        return () => (
            <div onClick={() => emit("boom", 123)}>Click me!</div>
        )
    },
})

const Parent = defineComponent(() => {
    return () => <Child onBoom={(x) => console.log(`Boom: ${x}`)} />
})
Run Code Online (Sandbox Code Playgroud)

上述功能正常,并且:

  • 在 child 中setupprops是空的(正如我所期望的)。
  • emitchild 中的调用已正确键入(它需要传递一个数字作为参数)。

不幸的是,它不知道如何输入onBoom父级:

  Property 'onBoom' does not exist on type 'IntrinsicAttributes & Partial<{}> …
Run Code Online (Sandbox Code Playgroud)

vue.js tsx vuejs3 vue-composition-api

6
推荐指数
1
解决办法
1604
查看次数