2017-05-19 6 views
0

Ich habe zwei Polymer-Elemente: <element-a> <element-b> beide von ihnen sind Kind-Element innerhalb eines Elternteils <element-c>, und jeder von ihnen sind auf anderen Datei.Polymer Javascript. Daten konnten nicht übergeben werden, wenn das Ereignis auf ein anderes Polymer-Element ohne Aufruf des Polymer-Elements

In <element-a> habe ich eine <paper-listbox>, darin gibt es einige <paper-item> drin mit On-Tap-Ereignis, um den Wert davon zu erhalten.

das Ziel ist: In der <element-b> Seite, die ich von einer API mit url so etwas zu bekommen:

api/configs/{{LFDNR}}

und nenne es zu einem <p> in <element-b> wenn ein <paper-listbox> von <element-a> Aufschalt-Ereignis ausgelöst wird. Die {{tempId}} ist der Wert aus der ausgewählten <paper-listbox> von der <element-a> Seite.

Ich habe bereits den ausgewählten Wert <paper-listbox> Wert, die ich versuchte, es auf der Konsole gedruckt, aber weiß nicht, wie Sie es an die <element-b> übergeben, ohne das Element aufzurufen. Ich habe bereits versucht, den Sitzungsspeicher zu verwenden, um einen temporären Wert für {{tempId}} festzulegen, aber ich weiß nicht, wann ich ihn auf der Seite <element-b> aufrufen soll. Versuchte, es von 'bereit: Funktion' anzurufen, hat nicht funktioniert, ich weiß. Ich habe es gerade versucht, um sicher zu gehen.

Im Folgenden finden Sie einige Codes für eine Illustration

// element-a.html 
    ... 
    <paper-listbox selected="0"> 
     <template is="dom-repeat" items="{{response.data}}"> 
      <paper-item value="{{item.id}}" on-tap="_getId"> 
      Configuration ID {{item.id}} 
      </paper-item> 
     </template> 
     </paper-listbox> 

<script> 
... 
_getId: function(e) { 
    var tempId = e.path[0].value; 
    console.log(e.path[0].value); 
} 
... 
</script> 

dann

//element-b.html 
<iron-ajax 
    ... 
    url="api/configs/{{tempId}}" 
    ... 
    > 

Jede Ihrer Hilfe wird sehr geschätzt. Vielen Dank.

+0

tut Ihr '' und '' sind in einer einzigen Datei? – aries12

+0

Tut mir leid, ich habe etwas vergessen, die '' und '' sind ein untergeordnetes Element in einem übergeordneten Element, sagen wir '' und jeder befindet sich in einer anderen Datei. * bearbeitet auf die Frage zu –

Antwort

1

Wenn die Eigenschaft in übergeordnete Element ist, dann können Sie, dass in Ihrem Kind Elemente wie nutzen diese

<element-b temp-id=[[tempId]]></element-b>

Aber in Ihrem Fall können Sie einen Hörer in Ihrem Elternelement haben

listeners: { 
'on-tap-listener': '_abc' 
} 

und feuern das Ereignis in <element-a> wie folgt

_getId: function(e) { 
    var tempId = e.path[0].value; 
    console.log(e.path[0].value); 
    this.fire('on-tap-listener',tempId); 
} 
Jetzt

Sie haben Ihre LFDNR in Ihrem Elternelement und weisen Sie auf eine Eigenschaft und binden Sie es an element-b wie oben

gezeigt
_abc:function(data){ 
    this.tempId = data.detail.tempId; 
}, 
+0

vielen Dank. das funktioniert für mich mit einer kleinen Änderung am letzten Code '_abc: Funktion (Daten) { this.tempId = data.detail; }, ' Ich kann den {{tempId}} - Wert für das Elternelement nach dem Ereignis auf dem Finger tippen.Aber ich weiß immer noch nicht, ob der {{tempId}} - Wert bereits nach dem Tippen auf ' 'übergeben wurde. Ich weiß nicht, wie man es auf '' Seite überprüft. –

Verwandte Themen