【问题标题】:Vue.js script does nothing in Laravel 5.5Vue.js 脚本在 Laravel 5.5 中什么都不做
【发布时间】:2018-05-25 00:40:34
【问题描述】:

当有人单击 + 号时,我正在尝试向现有表单添加新的文本字段。 这在我创建的代码 sn-p 中运行良好。但它不适用于我的 Laravel 5.5 网站。

我的控制台没有任何错误。

HTML 进入 create.blade.php,vue 脚本进入 addFlavor.vue 我是我的 app.js 我把:

Vue.component('addflavor-component', require('./components/addFlavor.vue'));

// addFlavor.vue
new Vue({
    el: '#vue',
        data() {
            return {
    	        formdata: [],
                flavors: [{
                    name: '',
                    percentage: '',
                }]
            }
        },
        methods: {
            addAroma: function(){
                this.flavors.push({
                    name: '',
                    percentage: ''
                })
            }
        },
        
    })
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/vue/1.0.12/vue.min.js"></script>
<!-- create.blade.php -->
<div id="vue">
  
    <div class="form-row align-items-left" v-for="flavor in flavors">

        <div class="col form-inline">
            <label class="sr-only" for="flavorname">Aroma 1</label>
            <div class="form-group">
                <input  type="text" 
                        class="form-control mb-2 mb-sm-0" 
                        id="flavorname" 
                        v-model="flavor.name">
            </div>
            <div class="input-group md-2 mb-sm-0">
                <input  type="text" 
                        class="form-control" 
                        id="percentage" 
                        v-model="flavor.percentage">
                                
                <div class="input-group-addon">%</div>
            </div>
            <button class="btn btn-success mt-5 mb5" @click="addAroma">+</button>
        </div> 
</div>
  
  <hr>
  
  <pre>
    {{ $data | json }}
  </pre>
  
</div>

如何在我的 Laravel 5.5 站点中正确使用此脚本?

【问题讨论】:

  • 在开发工具的网络选项卡中查看是否缺少一些资源
  • 我在那里看不到 addFlavor.vue,但我想没关系。
  • 当我将 HTML 代码移动到 .vue 文件中的模板并将 添加到我的 create.blade.php 中时,我收到以下错误:app. js:32397 [Vue 警告]:未知的自定义元素: - 您是否正确注册了组件?对于递归组件,请确保提供“名称”选项。 (在 中找到)
  • 表示你的.vue文件没有加载,vue找不到组件。
  • 只需将其放在 .js 文件而不是 .vue 中,并正常包含在页脚中

标签: javascript laravel laravel-5 vue.js laravel-5.5


【解决方案1】:

将您的文件 addFlavor.vue 重命名为 AddFlavor.vue(以遵循 VueJS 的建议)。

将该文件中的代码更改为:

export default {
    name: 'add-flavor',

    data() {
        return {
            formdata: [],
            flavors: [{
                name: '',
                percentage: '',
            }]
        }
    },

    methods: {
        addAroma() {
            this.flavors.push({
                name: '',
                percentage: ''
            })
        }
    },
}

app.js中的代码改为

import AddFlavor from './components/AddFlavor.vue';

const app = new Vue({
    el: '#vue',
    components: {
        'addflavor': AddFlavor,
   }
});

将以下行添加到webpack.min.jsmix.js('resources/assets/js/app.js', 'public/js'); 并通过 &lt;script src="{{ mix('/js/app.js') }}"&gt;&lt;/script&gt; 在刀片布局文件中包含 app.js

从您的 HTML 文件中删除手动 VueJS 导入。它没有必要,因为它已经在 package.json 中定义并且将通过 NPM 安装。此外,您导入了 VueJS 的 1.x 版本,但最新版本是 2.5.x。我强烈推荐这个。

<!-- create.blade.php -->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>

<div id="vue"><!-- <-- This could go to your main layout file -->
    <add-flavor inline-template>
        <div class="form-row align-items-left" v-for="flavor in flavors">
            <div class="col form-inline">
                <label class="sr-only" for="flavorname">Aroma 1</label>
                <div class="form-group">
                    <input type="text" class="form-control mb-2 mb-sm-0" id="flavorname" v-model="flavor.name">
                </div>
                <div class="input-group md-2 mb-sm-0">
                    <input type="text" class="form-control" id="percentage" v-model="flavor.percentage">

                    <div class="input-group-addon">%</div>
                </div>
                <button class="btn btn-success mt-5 mb5" @click="addAroma">+</button>
            </div> 
        </div>
    </add-flavor>
    <hr>

    <pre>{{ $data | json }}</pre>

</div>

也就是说,如果尚未完成,请通过npm installyarn install 安装所有节点依赖项,然后运行node run watch。这应该构建所有需要的模块。

【讨论】:

  • 我将文件重命名为 VueJS 建议并将我的 AddFlavor.vue 更改为您的版本。这就是所有需要的。谢谢你清楚的解释。我正在使用 Vue,js 2.5.9。一定是把错误的文件导入到代码sn-p中了。
猜你喜欢
  • 2018-10-09
  • 2023-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-16
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
相关资源
最近更新 更多