Seit Tagen versuche ich, Polymer mit einigen "dynamischen" Elementen zu füttern :) Leider ohne Erfolg ... Mein Ziel ist es, ein Element zur Laufzeit hinzugefügt und füllen sie ihn mit Inhalt von Polymer-Datenbindung (in einem „natürlichen“ Polymer-Weg. Ohne dieses Problem zu umgehen, wie in einer anderen stackoverflow answer vorgeschlagen.)Fügen Sie ein "dynamisches" Element mit Datenbindung zu meinem Polymer-Element hinzu
Bitte werfen sie einen Blick auf dem Code in dieser Geige (https://jsfiddle.net/mkappeller/ken9Lzc7/) oder bei der Grund dieser Frage. Ich hoffe wirklich, dass jemand da draußen mir helfen kann. Es würde auch helfen zu wissen, ob es einen Weg gibt, dies irgendwann in der Zukunft zu tun ...?
window.addEventListener("WebComponentsReady", function() {
var myAppModule = document.getElementById("my-app");
var myApp = document.getElementsByTagName("my-app")[0];
myApp.set("global", {
text: "Init"
});
});
<base href="https://polygit.org/components/">
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link href="polymer/polymer.html" rel="import">
<link rel="import" href="paper-button/paper-button.html">
<link rel="import" href="paper-input/paper-input.html">
<dom-module id="my-app">
<template>
<paper-input label="global.text" value="{{global.text}}"></paper-input>
<paper-button raised id="addHeadline">Add Headline</paper-button>
<paper-button raised id="changeText">Change Text</paper-button>
<p>global.text: <{{global.text}}></p>
</template>
<script>
Polymer({
is: "my-app",
properties: {
global: {}
},
ready: function() {
this.count = 0;
this.$.addHeadline.addEventListener("click",() => {
var myApp = Polymer.dom(document.getElementById("my-app"));
var t = myApp.node.childNodes[1];
var heading = document.createElement("h1");
heading.textContent = "{{global.text}}";
// Append to my-app
Polymer.dom(this.root).appendChild(heading);
});
this.$.changeText.addEventListener("click",() => {
this.set("global.text", "count-" + this.count++);
});
}
});
</script>
</dom-module>
<my-app></my-app>
Haben Sie alle Header auf den gleichen Textinhalt binden, oder wollen Sie sie ihre eigenen Inhalte haben? Wie auch immer, Sie sollten wahrscheinlich eine ['dom-repeat'] (https://www.polymer-project.org/1.0/docs/devguide/templates#dom-repeat) verwenden, die an eine Array-Eigenschaft gebunden ist. – Alan
Hi Alan. Ich möchte jedes Element an eine Eigenschaft binden. Eine Dom-Wiederholung würde mir hier nicht helfen. Weil ich den Template-Inhalt innerhalb der dom-repeat definieren muss. Und ich kann den Vorlageninhalt nicht im Handumdrehen ändern. – Matt
Brauchen Sie eine Zwei-Wege-Bindung oder ist eine Möglichkeit genug? –