2016-07-11 57 views
1

下面是我的代碼 -我想調用父功能爲函數在對象包梁

 contactNumberMask: function(value) { 
     return value 
    }, 

    componentDidMount: function() { 
     this.params = { 
      cellNumber: '' 
     }; 
     var maskList = $.masksSort($.masksLoad("http://cdn.rawgit.com/andr-04/inputmask-multi/master/data/phone-codes.json"), ['#'], /[0-9]|#/, "mask"); 
     this.maskOpts = { 
      inputmask: { 

      onMaskChange: function(maskObj, determined) { 
       if (determined) { 
       var number = this.contactNumberMask(maskObj.mask); 
       this.params.cellNumber = number+'-'+this.params.cellNumber; 
      } 
     } 
    }; 
}, 

在這方面,我想打電話給this.contactNumberMask內onMaskChange()()函數中。但它沒有得到這個參考。

回答

0

使用bind()設置上下文

 onMaskChange: function(maskObj, determined) { 
      if (determined) { 
      var number = this.contactNumberMask(maskObj.mask); 
      this.params.cellNumber = number+'-'+this.params.cellNumber; 
     }.bind(this) 
0

有一些方法可以做。例如,將這個參考存儲在一個變量中。

contactNumberMask: function(value) {}, 
componentDidMount: function() { 
    var that = this; 
    this.params = { 
     cellNumber: '' 
    }; 
    var maskList = $.masksSort($.masksLoad("http://cdn.rawgit.com/andr-04/inputmask-multi/master/data/phone-codes.json"), ['#'], /[0-9]|#/, "mask"); 
    this.maskOpts = { 
    inputmask: { 
     onMaskChange: function(maskObj, determined) { 
     if (determined) { 
      var number = that.contactNumberMask(maskObj.mask); 
      this.params.cellNumber = number+'-'+this.params.cellNumber; 
     } 
     } 
    }; 
}, 
+0

您錯過了該行之前的其他'this'引用。 – epascarello

0

您有幾種選擇:

  • 建立在componentDidMount功能

    VAR自年初可變自我=這

然後你用自己而不是這個。

  • 還可以創建一個功能_onMaskChange,然後使用綁定方法來設置 '這個' 在該方法中

    onMaskChange:_onMaskChange.bind(此,maskObj,所確定的)

0

您的function(maskObj, determined)塊不會與周圍的塊具有相同的上下文(this)。這是因爲 - 如果沒有指定其他 - function塊將創建它自己的上下文(this)。該功能不是綁定到外部的上下文。

以上多個答案是一個選項。但我會推薦使用=>箭頭函數語法。這會隱bind()的你的函數外背景:

onMaskChange: (maskObj, determined) => {...} 

而且它有一個更簡潔的語法。

+1

箭頭語法不適用於所有瀏覽器,它可能是一個問題。但是箭頭語法並沒有把這個悲傷地綁定在一起......它只是不爲函數創建這個,所以它看起來像一個綁定,但它不是......它被稱爲詞彙這個:https:// developer。 mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions –

+0

還會推薦使用像babel這樣的轉譯器,它可以使大多數瀏覽器支持頭疼都無效(並且使您能夠使用來自'this '世紀)。 但是,感謝澄清詞彙'這個' – Scarysize

+0

是的,babel肯定會有所幫助;)不用擔心我昨天不知道它或者哈哈! –

相關問題