VueJS数据()不起作用

Posted

技术标签:

【中文标题】VueJS数据()不起作用【英文标题】:VueJS data() not working 【发布时间】:2017-02-17 07:56:09 【问题描述】:

我正在尝试制作一个 VueJS 应用程序,但即使使用最简单的示例也失败了。 我正在使用 Laravel 5.3,并预先构建了对 VueJS 的支持(版本 1,我也尝试了版本 2)。

这是我的 Example.vue 组件

<template>
    <div class="profile">
         name 
    </div>
</template>

<script>
    export default 
        data () 
            return 
                name: 'John Doe'
            
        
    
</script>

这里是主要代码

Vue.component('example', require('./components/Example.vue'));

const app = new Vue(
    el: '#app'
);

这是每次在控制台中出现的错误:

[Vue 警告]:属性或方法“名称”未在实例上定义,但在渲染期间被引用。确保在 data 选项中声明反应数据属性。 (在组件中找到)

任何想法有什么问题吗? 谢谢

【问题讨论】:

【参考方案1】:

调用模板中的组件

Vue.component('example', 
  template: `<div class="profile"> name </div>`,
  data () 
return 
  name: 'John Doe'

  
)

const app = new Vue(
  el: '#app'
)
<script src="https://unpkg.com/vue/dist/vue.js"></script>

<div id="app"><example></example></div>

【讨论】:

是的,它是这样工作的。但我真的很想使用“单文件组件” 这完全一样,不是吗?导入单个文件组件并将组件选项替换为您导入的组件名称 嗯,不。 This 是我想要达到的目标,this 是你向我展示的。差别不大,但你知道,细节很重要:D 你使用的是 webpack 还是 browserify? 是的,Laravel 已经准备好了所有这些【参考方案2】:

在您的 script 标签中而不是 export default 使用:

module.exports = 
  data() 
    return  counter: 1 
  

这应该适合你

【讨论】:

【参考方案3】:

问题是您试图从该文件加载组件“示例”,但您没有为其命名。你应该使用:

<script>
   export default 
     name: 'example',
     data() 
       return 
         name: 'John Doe'
       
     
   
</script>

或者通过以下方式加载组件(不确定是否需要扩展.vue):

require('./exmaple').default();

如果您使用 Babel,您也可以使用以下语法加载组件而不给它们命名:

import Example from ./example

如果您使用 Babel,也可以查看 this post 以获取更多信息

【讨论】:

以上是关于VueJS数据()不起作用的主要内容,如果未能解决你的问题,请参考以下文章

VueJS从Vuex返回值不起作用

vuejs @import 不起作用

请求的条件不起作用Vuejs

VueJS计算过滤器功能不起作用

为啥我的 css 代码在 vuejs 中不起作用?

VueJS过渡“进入”不起作用