2016-06-27 3 views
0

this questionでは、OPは、コンポーネント内の外部にプライベートオブジェクトを公開しないようにする方法について尋ねました。私は周りにグーグルで行ってきたし、反対を行う方法を見つけることができません。下のコンポーネントがあり、私のWebページまたは親コンポーネントからprivateObjにアクセスしたいとします。 JavaScriptとPolymer APIを使用してどのように行うことができますか?コンポーネントのスクリプト内のプライベートオブジェクトにアクセスする方法は?

<polymer-element name="animating-element"> 
    <script>  
    var privateObj = {}; 

    privateObj.internalState = 0; 

    //private static method 
    privateObject.setupState = function(polymerObject) { 
     if(polymerObject.stateExposedToOutside == /* some conditions */) { 
      privateObject.internalState = 1; 
     } 
    } 

    Polymer('animating-element', { 
     stateExposedToOutside: 0, 
     ready: function() { 

      privateObj.setupState(this); 
      this.animate(); 

     }, 
     animate: function() { 

     } 
     });  
    </script> 
</polymer-element> 
+1

あなたの質問は「プライベートオブジェクトを非公開にするにはどうすればいいですか?」という質問があります。それからプライベートなものを作ることができるのは何ですか? – ceejayoz

+0

@ceejayozはい、私は個人的なものを公開することはコンポーネントのカプセル化の前提に反対していることを知っていますが、それが何とかできたら、私はそれが第三者コンポーネントだから好きでしょう。パッチ適用されたアプリケーションを出荷します。また、それはまさにPolymerがまさにそのものです。間違いなく、Webコンポーネントの標準化に欠けています。 – rraallvv

+0

「前提」に反するものではなく、言語の機能*に反するものです。 PRがマージされるまで(または拒否されるまで)コンポーネントをフォークする必要があります。それはプライベートオブジェクトです。それがプライベートであることの全ポイントは、プライベートだということです。 – ceejayoz

答えて

1

あなたは今、あなたはそれがPolymer 0.5でどのように動作するかわからない(this.privateObjValue()を使用してオブジェクトの値を読み取ることができ、あなたのprivateObj

privateObjValue:function(){ 
    return privateObj; 
} 

の値を返しますPolymerコンストラクタの内部publicメソッドを作成することができます)

関連する問題