2016-08-17 24 views
1

私が使用している変数は、ある点の後にが定義されていませんになります。誰かが何が起こっているのか理解するのを助けることができますか?変数にアクセスできない

以下のコードは分度器コードです。

this.searchBy = element(by.model('searchCompanyComponent.searchByValue')); 

this.clickTheProvidedValueInSearchByDropdown = function (selectedItem) { 
    var x = this.searchBy; 
    this.searchBy.all(by.tagName('option')).filter(function (elem, index) { 
     return elem.getText().then(function (text) { 
      return text.toUpperCase().replace(/ |-/g, '') === selectedItem.toUpperCase().replace(/ |-/g, ''); 
     }); 
    }).getText().then(function (text) { 
     console.info(x); // 1 
     console.log(this.searchBy); // 2    
    }); 


}; 
console.log(this.searchBy); //3 

コンソールログの1と3はロケータオブジェクトを示しますが、2のコンソールログは定義されていません。

この予期しない動作の背景は何ですか?

答えて

4

JavaScriptでは、thisは、参照しているコンテキストに応じて多くの異なることがあります。

console.log(this.searchBy); // 2と言っているときは、匿名関数のコンテキストにあり、getTextに渡されました。searchByプロパティはありません。あなたのページオブジェクトのコンテキストにbindに、この機能を必要とするか、検討すると便利かもしれx

searchByに格納されている基準を使用するかthis mdn article

関連する問題