2016-04-18 11 views
2

私は新しいjsfiddle埋め込みの要素を作ろうとしています。ユーザー名とフィドルIDをその場で変更する必要があります(私はいくつかのプロパティを作成しました)。JavaScript非同期とポリマー

しかし、スクリプトは//jsfiddle.net///embed/を検索します。これは、プロパティがバインドされる前にスクリプトタグがトリガーされていることを意味します。ここに私のコードです。スクリプトタグをDOMに追加されたときにアクティブJSFiddle

+0

私は文字列のデフォルト値を削除し、URLが[this fiddle](https://jsfiddle.net/77dv87ne/1/)の計算されたバインディングになるようにしました(スクリプトsrc属性がユーザー名とフィドルの両方が定義されている場合にのみ設定されます)、それ以外の問題が残っているようです。 – Alan

答えて

1

ユーザ名とフィドル特性

<link rel="import" href="https://polygit.org/components/polymer/polymer.html"> 
<dom-module name="jsfiddle-demo"> 
    <template> 
    <script async src="//jsfiddle.net/{{username}}/{{fiddle}}/embed/"></script> 
    </template> 
    <script> 
    Polymer({ 
     is: 'jsfiddle-demo', 
     properties: { 
     username: { 
      type: String, 
      value: '' 
     }, 
     fiddle: { 
      type: String, 
      value: '' 
     }, 
     } 
    }); 
    </script> 
</dom-module> 
<jsfiddle-demo username="link2twenty" fiddle="6ppzpuoq"></jsfiddle-demo> 

等は、実際には時点で空です。それらを更新した後でさえ、スクリプトは再ロードされません。

スクリプトタグをif-templateにラップして、ユーザー名とフィドルの両方が存在する場合のみポリマーがDOMに追加できるようにします。

<link rel="import" href="https://polygit.org/components/polymer/polymer.html"> 
<dom-module name="jsfiddle-demo"> 
    <template> 
    <template is="dom-if" restamp if="[[usernameAndFiddlePresent(username, fiddle)]]"> 
     <script async src="//jsfiddle.net/{{username}}/{{fiddle}}/embed/"></script> 
    </template> 
    </template> 
    <script> 
    Polymer({ 
     is: 'jsfiddle-demo', 
     properties: { 
     username: { 
      type: String, 
      value: '' 
     }, 
     fiddle: { 
      type: String, 
      value: '' 
     }, 
     }, 
     usernameAndFiddlePresent: function(username, fiddle) { 
     return (username && fiddle); 
     } 
    }); 
    </script> 
</dom-module> 
<jsfiddle-demo username="link2twenty" fiddle="6ppzpuoq"></jsfiddle-demo> 

restamp属性がキーです。これは、実際にポリマーを削除したり、テンプレート内の要素を表示/非表示にするのではなく、DOMに追加するように指示します。
fiddleプロパティのユーザー名が変更されるたびに式が評価されます。

理論上、ユーザー名やフィドルを変更したい場合は、プロパティの1つを設定解除して別のものにリセットするだけです。これにより、別のsrcを持つ新しいスクリプトタグが得られるはずです。

+0

新しいエラーが発生しましたが、問題のエラーを解決しました。ありがとう:-) –

関連する問題