laravel中的Javascript函数未定义

use*_*273 8 javascript laravel laravel-5

我在app.js中添加了一个js方法:

require('./bootstrap');

window.Vue = require('vue');

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

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

function hello()
{
    alert("hello");
}
Run Code Online (Sandbox Code Playgroud)

然后编译我的资产并将app.js添加到我的视图中:

<script src="{{ asset('js/app.js') }}"></script>
Run Code Online (Sandbox Code Playgroud)

如果我在这一点上加载我的视图并查看源代码我可以看到app.js的链接,如果我打开app.js,我可以在那里看到我的hello方法还有很多其他东西.

现在,当我想调用我的方法时,我尝试这样做:

<a onclick="hello();">
Run Code Online (Sandbox Code Playgroud)

但是在我的控制台中我得到一个未捕获的ReferenceError:hello未定义错误.可能是什么问题呢?

apo*_*fos 11

Laravel mix倾向于将所有js资产编译成一个不错的webpack时代,但是这意味着你的函数实际上并不在全局范围内,因为它们都包含在立即调用的函数表达式(iife)中.

你需要:

window.hello = function () {
     alert("Hello");
}
Run Code Online (Sandbox Code Playgroud)

但是,这通常不是最好的策略,理想情况下,您可以在vue中添加事件处理程序.