sourcecode

어떻게 내가 약속 전화 간단히 뷰 앱 또는 구성 요소의 속성을 업데이트할 수 있을까요?

copyscript 2022. 9. 12. 11:46
반응형

어떻게 내가 약속 전화 간단히 뷰 앱 또는 구성 요소의 속성을 업데이트할 수 있을까요?

나는 다음과 같은 Firebase 콜백에서 뷰 속성을 업데이트 하는 것 하지만 소용없었어요.이 코드

methods: {
    sign_out : function(e) {
        this.item_count = 0
    }
}

작품들은지만 속성이 약속 콜백에서 설정됩니다:.

methods: {
  sign_out : function(e) {
  firebase.auth().signOut().then(function() {
      this.item_count = 0
    })
  },

어떻게 이번 사건에 한 속성의 가치 세울 수 있을까요?

당신의.this콜백는 것은 틀린 개체를 가리키고 있다.당신이 이 문제를 해결할 수 있는 몇가지 방법이 있다.

  1. Capturethis폐쇄적에.

    methods: {
      sign_out : function(e) {
        var self = this;
        self.item_count = 0
        firebase.auth().signOut().then(function() {
          self.item_count = 0
      })
    }
    
  2. 뚱뚱한 화살표를 사용하여.

    methods: {
      sign_out : function(e) {
        this.item_count = 0
        firebase.auth().signOut().then(() => this.item_count = 0)
      }
    }
    
  3. 사용 bind().

    methods: {
      sign_out : function(e) {
        this.item_count = 0
        firebase.auth().signOut().then(function() {
          this.item_count = 0
        }.bind(this))
    }
    

뚱뚱한 화살 모든 현대 브라우저에서 만약 당신이 es5에 구축하고 있지 않아 이를 사용하여 작동하지 않습니다.

한가지 방법은 콜백의 이것은 밖에 대한 참조를 만드는 것이다.콜백이 내부의 의도된 개체의 이 접근에 대한 참조를 사용합니다.

그래서 차와 같은 것:

methods: {
  sign_out : function(e) {
  this.item_count = 0
  _this = this;
  firebase.auth().signOut().then(function() {
       _this.item_count = 0        
    })
 },

언급URL:https://stackoverflow.com/questions/42590538/how-can-i-update-a-vue-apps-or-components-property-in-a-promise-call-back

반응형