2017-10-04 9 views
0

タイトルが示すように、外部から関数にアクセスする方法を知りたいと思います。 'this.FunctionName'を使用してready()で行うことができます。しかし、明らかに、「これはファイヤーベースのリスナーの「ヌル」値です。Polymer 2.0の関数外のポリマーアクセス関数

ready() { 
    super.ready(); 
    //this.displayData("12","13"); 
    console.log(this); 
    var database = firebase.database(); 
    var myDataref = database.ref('sessions/1'); 
    myDataref.on('child_added', function(snapshot) { 
     var message = snapshot.val(); 
     //console.log("Left: "+message.left); 
     //console.log("Right: "+message.left); 
     console.log(this); 
     //this.displayData(message.left, message.right); 
    }); 
    } 

    displayData(leftData, rightData) { 
    var para = document.createElement("li"); 
    var t = document.createTextNode("Left: "+leftData+", Right: "+rightData); 
    para.appendChild(t); 
    console.log(para); 
    this.$.mes.appendChild(para); 
    } 

Code

答えて

0

簡単な方法は、thisのエイリアスを作成し、firebaseリスナーの内側にそれを使用することです。

例:

ready() { 
    super.ready(); 

    var _this = this; 
    ... 
    myDataref.on('child_added', function(snapshot) { 
    ... 
    _this.displayData(message.left, message.right); 
    }); 
} 

他の方法は、あなたがthisの値を指定できるようにするJavascriptのbind methodを、使用することです。

例:

ready() { 
    super.ready(); 

    ... 
    myDataref.on('child_added', function(snapshot) { 
    ... 
    this.displayData(message.left, message.right); 
    }.bind(this)); 
} 
+0

ありがとう!しかし、それを行うより論理的な方法はありますか? – jaronnan

関連する問題