在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 求怎么在外部調(diào)用內(nèi)部的函數(shù)呢?

求怎么在外部調(diào)用內(nèi)部的函數(shù)呢?

clipboard.png

methods: {
      move(){

      },
      renderMap() {
        var self = this;
          var map = new AMap.Map("container", {
            zoom: 16,
            scrollWheel: false,
          });
          
        map.panTo([111.672046,40.821607])

        AMapUI.loadUI(["misc/PositionPicker"], function (PositionPicker) {
          if (self.point.length != 0) {
            map.center = self.point;
          }
          var positionPicker = new PositionPicker({
            mode: "dragMap", //拖拽Marker模式
            map: map,//xy坐標
            iconStyle: {
              //自定義外觀
              url: require("../../../assets/images/定位錨點@3x.png"), //圖片地址
              size: [22, 32], //要顯示的點大小,將縮放圖片
              ancher: [24, 40] //錨點的位置,即被size縮放之后,圖片的什么位置作為選中的位置
            }
          });
          positionPicker.on("success", function (positionResult) {
            var location = {
              address: positionResult.address,
              point: [positionResult.position.lat, positionResult.position.lng]
            };
            self.address = location.address;
            self.point=location.point;
            self.$emit("location", location);
          });
          positionPicker.start();
          map.panBy(0, 1);
          if(self.po.point!==undefined){
            var marker = new AMap.Marker({
              position:[self.po.point[1],self.po.point[0]]
            });
            map.add(marker);//添加到地圖
          }
        });
      }
    }

vue2,想在move方法里調(diào)用renderMap()里面的map.panTo方法.

但是不知道怎么去調(diào)用,試了好多辦法都不行,map.panto放到renderMap外面就沒辦法用了.

使用的高德地圖的API,但是不知道怎么在外面調(diào)用他的方法.
高德地圖平移api

求大大解惑,非常感謝.

回答
編輯回答
撥弦

你可以在 renderMap方法中,把你要用的方法暴露出來,如下面這個例子

<script>
export default {
    data(){
        return {
            c: ''
        }
    },
    methods: {
        a(){
            this.c()
        },
        b(){
            function c(){
                console.log('內(nèi)部方法')
            }
            this.c = c
        }
    },
    mounted(){
        this.b()
        this.a()
    }
}
</script>
2018年6月30日 04:26
編輯回答
卟乖

哈哈,我剛好做過這個,就是個作用域的問題,
把map對象定義在data里
或者
把定義放在外層,然后在方法里實例Amap給這個對象
clipboard.png
或者
把對象掛在window對象上,window.map = new AMap.Map()

2017年8月22日 19:18
編輯回答
撥弦

在data中使用一個變量保存你需要調(diào)用的這個方法,或者將這個方法return出來

2017年11月18日 22:16
編輯回答
若相惜

沒有用window.x解決不了的事情

2018年5月2日 02:57
編輯回答
慢半拍
data(){
    return{
        map:null
    }
},
methods: {
      move(){
          this.map.panTo([111.672046,40.821607])
      },
      renderMap() {
          this.map = new AMap.Map("container", {
            zoom: 16,
            scrollWheel: false,
          });
          
          this.map.panTo([111.672046,40.821607])

          ....
      }
}

想了一下,這樣并不妥,因為這樣map變動會重新渲染,考慮樓下的方法直接放到vm作用域外。

2018年6月21日 00:37