2017-03-06 6 views
0

Ich möchte meine Benachrichtigungsfunktion von anderen JS-Datei aufrufen, aber es immer undefined zurückgeben.Javascript (Vue) Call-Funktion von anderen Js-Datei zurück undefined

notification.js

function notification(message, level = 'success') { 
    Lobibox.notify(level, { 
     delayIndicator: false, 
     msg: message 

    }); 
} 

addToCart.vue

<template> 
    <div> 
    <button class="button dark small" @click="addToCart(menu, price)"> 
     <i class="fa fa-cutlery fa-lg m-right-5"></i> 
     Pilih Menu 
    </button> 
    </div> 
</template> 

<script> 
    export default{ 
     props: ['menu', 'price'], 

     methods:{ 
      addToCart(menu, price){ 
       const currentPoint = $('#current_point').val(); 

       if(price > currentPoint){ 
        return notification('Point is not enough', 'error') 
       } 


      } 
     } 
    } 
</script> 

app.js

Vue.component('addtocart', require('./components/AddToCart.vue')); 
new Vue({ 
    el: '#app' 
}); 

html:

<script src="{{ asset('js/notification.js') }}"></script> 
<script src="{{ asset('js/app.js') }}"></script> 

Jedes Mal price > currentPoint rufen Sie es immer wieder Uncaught ReferenceError: notification is not defined.

Ich kompiliere es mit LaravelMix.

Irgendeine Lösung?

+0

Ihre Benachrichtigungsmethode jede return-Anweisung nicht verfügt. So gibt es undefined –

Antwort

0

notification.js

function notification(message, level = 'success') { 
    Lobibox.notify(level, { 
     delayIndicator: false, 
     msg: message 

    }); 
} 

window.notification = notification; 

es lösen. Ich muss window.notification = notification hinzufügen, damit ich es überall anrufen kann.

0

Es scheint, brauchen Sie nur in Ihren HTML Folgendes zu tun:

<script src="js/notification.js"></script> 
<script src="js/app.js"></script> 
+0

Ich benutze Laravel. Mein Code wird genauso wiedergegeben wie deiner – ssuhat

0

ist es besser zu vermeiden, Dinge ins Fenster zu stellen.

Es scheint, dass Sie die Vue mit Webpack verwenden. Wenn nicht, dann wird das nicht funktionieren. Wenn Sie es sind, verwenden Sie besser ES6-Module, um sicherzustellen, dass Sie Zugriff auf die Dinge haben, wo Sie sie benötigen.

Innerhalb Ihrer notification.js Datei:

export default user 

Welche können Sie dann rufen

import notification from 'notification'