2016-05-10 66 views
0

我想我VUEJS模块中使用一个混合:VueJS混入方法

模块

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

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

密新

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(); 
     } 
    } 
} 

但我得到一个错误,即谷歌地图。 initGISMap不是一个函数。如何在组件中使用mixin的方法?

+0

我相信你需要引用mixin。所以在模块this.GoogleMaps.initGISMAP(数据) – vbranden

回答

5

- 编辑,以正确的错误,我在诠释您的需求

当使用混入,你不引用方法MixinName.method()做 - 它只是“这” - 通过返回的这些方法和属性的mixin并且是第一顺序,可以这么说,所以他们必然会'这个'。

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

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

这是正确的,看看文档和选项合并:https://vuejs.org/guide/mixins.html#Option-Merging –