2016-05-10 30 views
0

Ich möchte ein mixin in meinem VUEJS Modul verwenden:VueJS Mixins Methoden

Modul

<script> 
    var GoogleMaps = require('../mixins/GoogleMaps'); 

    export default { 
     mixins: [GoogleMaps], 
     events: { 
      MapsApiLoaded: function(data) { 
       GoogleMaps.initGISMap(data); 
      } 
     }, 
} 
</script> 

Mixin

export default { 
    methods: { 
     initGISMap(selector) { 
      map = new google.maps.Map(selector, { 
       zoom: 10, 
       mapTypeId: google.maps.MapTypeId.ROADMAP, 
      }); 

      // Set initial Location and center map to this location 
      initialLocation = new google.maps.LatLng(48.184845, 11.252553); 
      map.setCenter(initialLocation); 

      // Create a searchmarker 
      searchMarker = createMarker(); 

      // Init Autocomplete for GIS 
      initAutoComplete(); 
     } 
    } 
} 

Aber ich erhalte eine Fehlermeldung, dass Googlemaps. initGISMap ist keine Funktion. Wie verwende ich eine Mixin-Methode innerhalb einer Komponente?

+0

ich glaube, dass Sie das Mixin mit diesem Bezug nehmen müssen. so im Modul this.GoogleMaps.initGISMAP (Daten) – vbranden

Antwort

5

- bearbeiten, um eine korrekte Fehler gemacht ich Ihre Bedürfnisse

bei der Interpretation Wenn Mixins verwenden, können Sie verweisen nicht die Methoden MixinName.method() - es ist ‚dies‘ nur - diese Methoden und Eigenschaften zurückgegeben, indem Sie Ihre Mixin und sind sozusagen erste Ordnung, also sind sie an "dieses" gebunden.

<script> 
    var GoogleMaps = require('../mixins/GoogleMaps'); 

    export default { 
     mixins: [GoogleMaps], 
     events: { 
      MapsApiLoaded: function(data) { 
       this.initGISMap(data); 
      } 
     }, 
} 
</script> 
+0

Das ist richtig, werfen Sie einen Blick auf die Dokumentation und Option Zusammenführung: https://vuejs.org/guide/mixins.html#Option-Merging –