VueJS Mixins方法

时间:2016-05-10 23:35:49

标签: javascript vue.js

我想在我的VUEJS模块中使用mixin:

模块

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

但是我收到一个错误,GoogleMaps.initGISMap不是一个函数。如何在组件中使用mixin方法?

1 个答案:

答案 0 :(得分:6)

- 编辑以纠正我在解释您的需求时所犯的错误

当使用mixins时,你没有引用MixinName.method()方法 - 它只是'this' - 你的mixin返回的那些方法和属性是第一顺序,所以可以说,它们必然会'这个' ”。

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

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