2016-11-21 10 views
0

ユーザーが要素の作成時にログインしているかどうかを確認し、ユーザーがそうでない場合はリダイレクトします。問題は、ユーザーがsignedInであってもdomHost.signedInプロパティがfalseであることです。後でプロパティをチェックすると(たとえば、ボタンタップで関数を呼び出すときなど)、そのプロパティは真であるはずです。readyHaHostのsignedInプロパティがready関数呼び出しでfalseである

<link rel="import" href="../bower_components/polymer/polymer.html"> 

<link rel="import" href="/bower_components/paper-button/paper-button.html"> 

<dom-module id="settings-view"> 
    <template> 
     <style> 
     </style> 
     TODO: user settings 
     <paper-button on-tap="debugFunction">button</paper-button> 
    </template> 

    <script> 
     Polymer({ 
      is: 'settings-view', 

      ready: function() { 
       console.log(this.domHost.signedIn); // false 
       console.log(this.domHost.user); // null 
      }, 

      debugFunction: function() { 
       console.log(this.domHost.signedIn); // true 
       console.log(this.domHost.user); // user object 
      } 
     }); 
    </script> 
</dom-module> 

ユーザーが子要素にsignedInあるかどうかを確認するための最良の方法は何ですか:ここ

は、コードのですか? signedInの値をiron-meta要素に設定する方がよいでしょうか?

おかげで、月

答えて

2

あなたはそれらの上にobserversでプロパティを宣言する方がいいでしょう。オブザーバは、プロパティの値がundefined以外の値になるとすぐに関数を実行します。だからあなたのコードは次のようになります。

<link rel="import" href="../bower_components/polymer/polymer.html"> 

<link rel="import" href="/bower_components/paper-button/paper-button.html"> 

<dom-module id="settings-view"> 
    <template> 
     <style> 
     </style> 
     TODO: user settings 
    </template> 

    <script> 
     Polymer({ 
      is: 'settings-view', 

      properties: { 
       signedIn: { 
        type: Boolean, 
        observer: '_signedInChanged' 
       }, 

       user: { 
        type: Object, 
        observer: '_userChanged' 
       }, 
      }, 

      _signedInChanged: function (newSignedInValue) { 
       console.log(newSignedInValue); // true 
       console.log(this.signedIn); // true 
      }, 

      _userChanged: function (newUserValue) { 
       console.log(newUserValue); // user object 
       console.log(this.user); // user object 
      } 
     }); 
    </script> 
</dom-module> 

あなたはJavaScriptやデータバインディングを通じてそれらsignedInuser値を更新する場合次に、観察者は、関連する関数を呼び出します。

+0

お返事ありがとうございますが、_signedInChanged関数と_userChanged関数が最初にfalseとnull値で、次にtrueとuserオブジェクトで呼び出されるという問題があります。 signedInの値がfalseの場合、ユーザーをログインページにリダイレクトしたいと思います。最初の関数呼び出しでそれらをリダイレクトするので私の問題は解決しません。私は、デフォルト値をtrueに設定しようとしましたが、それは役に立ちませんでした。ありがとう –

関連する問題