Ist es möglich, etwas von dieser Art zu erreichen. Sagen, ich habe ein Element my-element.htmlPolymer - Zwei-Wege-Bindung in Dom-Repeat
Here I Vorlage repeate versuchen zu verwenden Papier-Tasten zu erzeugen, die von einem Objekt controlButtons Fütterung, die bei der Erzeugung der Tasten mit dem Namen gut funktioniert und ID. Aber die deaktivierte Bindung funktioniert nicht und auch die On-Click-Listener werden von diesem Ansatz nicht registriert.
Meine Frage ist, ist das der richtige Weg, es zu tun? Oder es ist nicht möglich, eine solche Art von Bindungen in Polymer hinzuzufügen.
P.S.- Dies ist ein Beispiel Beispiel, aber in meiner App gibt es viele Tasten und Elemente und daher versuche ich eine Vorlage Repeater für den Zweck zu verwenden.
<dom-module id="my-element">
<template>
<div id="top_container" class="layout vertical center-justified">
<div id="controls" class="horizontal layout">
<template is="dom-repeat" items="{{controlButtons}}" as="button">
<paper-button id="{{button.id}}" class="button" on-click={{button.onClickBinding}} disabled$="{{button.disableBinding}}" raised>{{button.name}}</paper-button>
</template>
<!-- Commented temporarily for template test -->
<!--<paper-button id="start_button" class="button" on-click="buttonAClick" disabled$="{{__computeDisabling(1, controlFlag2, controlFlag1)}}" raised>A</paper-button>
<paper-button id="stop_button" class="button" on-click="buttonBClick" disabled$="{{__computeDisabling(2, controlFlag2, controlFlag1)}}" raised>B</paper-button>
<paper-button id="clear_button" class="button" on-click="buttonCClick" disabled$="{{__computeDisabling(4, controlFlag4, controlFlag1)}}" raised>C</paper-button>
<paper-button disabled$="{{__computeDisabling(6, controlFlag4, controlFlag1, disableSave)}}" class="button" on-click="buttonDClick" raised>D</paper-button>
<paper-button id="import_button" class="button" on-click="buttonEClick" disabled$="{{__computeDisabling(5, '', controlFlag2)}}" raised>E</paper-button>-->
</div>
</div>
</template>
<script>
Polymer({
is: "my-element",
properties: {
controlFlag1: {
type: Boolean,
value: false,
notify: true
},
controlFlag2: {
type: Boolean,
notify: true,
value: false
},
controlFlag3: {
type: Boolean,
value: false
},
controlFlag4: {
type: Boolean,
value: true,
notify: true
},
controlButtons: {
type: Object,
value: [{name: "A", id: "buttonA", onClickBinding: "buttonAClick", disableBinding: "{{__computeDisabling(1, controlFlag2, controlFlag1)}}"},
{name: "B", id: "buttonB", onClickBinding: "buttonBClick", disableBinding: "{{__computeDisabling(2, controlFlag2, controlFlag1)}}"},
{name: "C", id: "buttonC", onClickBinding: "buttonCClick", disableBinding: "{{__computeDisabling(4, controlFlag4, controlFlag1)}}"},
{name: "D", id: "buttonD", onClickBinding: "buttonDClick", disableBinding: "{{__computeDisabling(6, controlFlag4, controlFlag1, controlFlag3)}}"},
{name: "E", id: "buttonE", onClickBinding: "buttonEClick", disableBinding: "{{__computeDisabling(5, '', controlFlag2)}}"}]
}
},
created: function() {},
ready : function() {},
buttonAClick: function() {
console.log("A button clicked!");
},
buttonBClick: function() {
console.log("B button clicked!");
},
buttonCClick: function() {
console.log("C button clicked!");
},
buttonDClick: function() {
console.log("D button clicked!");
},
buttonEClick: function() {
console.log("E button clicked!");
},
__computeDisabling: function(call, flag1, flag2, flag3) {
switch (call) {
case 1:
return !flag1 || flag2;
case 2:
return !flag1 || !flag2;
case 3:
return !flag1 || !flag2;
case 4:
return flag1 || flag2;
case 5:
return flag2;
case 6:
return flag1 || flag2 || flag3;
case 7:
return !flag2;
}
},
});
</script>
Dank für die soultion für Click-Ereignis, aber wie Behinderte $ behandeln = "{{button.disableBinding}}" – Roy
Du hast Recht, ich habe diesen Teil vermisst. Ich habe die Antwort bearbeitet, damit es funktioniert. Mein Ansatz wäre, für die Artikel eine andere Datenstruktur zu verwenden (siehe Codebeispiel). – LeBird
danke für die Annäherung, eine Änderung, die ich tat, ist, alle controlFlags als agruments in der _computeDisabling Bindungsmethode wie ** _ computeDisabling (deviceReady, monitoringStarted, isChartEmpty, Knopf) ** zu übergeben. Ansonsten tritt die dynamische Bindung nicht auf, wenn die Flag-Werte geändert werden. – Roy