亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用此訪問Vue實例

使用此訪問Vue實例

森林海 2021-04-07 09:09:59
當我嘗試在VueJs方法中使用此方法時,出現以下錯誤這是未定義的我認為我不應該使用箭頭函數,因為它們this沒有綁定到我期望的上下文中。我嘗試使用常規函數,并得到上面的錯誤。到目前為止我嘗試過的methods: {  connection(){    new elasticsearch.Client({...});        client.search({...})          .then(function (resp) {            var hits = resp.aggregations;            this.tmp = hits[1].value;          }, function (err) {            console.trace(err.message);          });                      }}我無法this在傳遞給.search和的函數中使用想要的.then。怎樣才可以有this綁定到我的VueJs實例,這樣就可以訪問data,computed等等...?
查看完整描述

2 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

您應該使用箭頭功能保存this上下文,并且不要忘記Vue內部的方法this引用了當前實例。


data() {

  return {

    counter:0,

    connections:2,

    tmp: 0,

  }

},

methods: {

  connection() {

    // ...

    var client = new elasticsearch.Client({

      host: 'xxxxxxxxxxxx'

    });

    client.search({

      [...]

    }).then((resp) => {

      var hits = resp.aggregations;

      this.tmp = hits[1].value;

    }, (err) => {

      console.trace(err.message);

    });

  }

}


查看完整回答
反對 回復 2021-04-22
?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

您可以將this變量分配給局部變量(self)并在.then函數中使用


   data () {

    return {

        counter:0,

        connections:2

    }

},

methods: {

    connection(){

        var self = this;

        var tmp=0

        var elasticsearch = require('elasticsearch');

        var client = new elasticsearch.Client({

        host: 'xxxxxxxxxxxx'

        });

        client.search({

        "index":"400000",

        [...]

        }

        }).then(function (resp) {

            var hits = resp.aggregations;

            self.tmp=hits[1].value;

        }, function (err) {

            console.trace(err.message);

        });   

        console.log("tmp:",tmp)


    }

}


查看完整回答
反對 回復 2021-04-22
  • 2 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號