5
だから私は問題を抱えていると私はまだJavaScriptを得ることはありませんので、それが最も可能性が高いです... Cytoscapeは「この」自分自身を持っており、ポリマーは、彼らの「この」ポリマー本とCytoscapeこの
<div id="labelFld">{{node.label}}</div>
<div id="measureFld">{{node.measure}}</div>
<div id="timesignatureFld">{{node.time_signature}}</div>
<div id="voiceFld">{{node.voice}}</div>
<div id="beatFld">{{node.beat}}</div>
<div id="meventFld">{{node.event}}</div>
var cy;
cytoscape({
ready : function() {
Polymer: ({
...
properties : {
node : {
type : Object,
notify : true,
readOnly : true
}
},
...
を持っています
// Fires when the local DOM has been fully prepared
ready : function() {
var self_node = this.node; // <- 'this' via Polymer
try {
cy = cytoscape({
container : this.$.rhythmgraph,
ready : function (e) {}
});
} catch (err) {
console.log(err);
}
// Assign handler to Cytoscape click event for node elements
cy.on('click', 'node', {
"nodedata" : self_node // <- Seems to pass by value, not reference
}, function (e) {
self_node = this.data(); // <- 'this' via Cytoscape
console.log(self_node);
// e.data.nodedata = this.data();
});
},
しかし、更新するために 私<div>{{node.label}}</div>
私はthis.node.label = "N42" // Polymer
を行うことができるようにする必要がありますが、私は内側にありthis.data() // Cytoscape
を必要とするので、私はcy.on('click','node', ...)
でそれを行うことはできません。
スコープが実際に私を殺しています。
EDIT
最後に、私が見て、更新するためにオブザーバーを作成しました:
self_node = this.selectedNode;
var poly = this;
Object.observe(self_node, function(changes) {
changes.forEach(function(change) {
if(change.type == "update") {
poly.selectedNode = {
"id": change.object.id,
... }
};
poly.notifyPath('selectedNode.id', change.object.id);
}
});}.bind(poly));
をcy.on 'ため( 'クリック' ... {...} .bind(この)); 'これはポリマーの' this'で置き換えられます - ポリマーの 'this'は' this.node'への参照であり、 'var rhynode = this.node'によるコピーされた値ではありません。 '.bind(this)'を追加すると 'Uncaught TypeError:this.dataは関数ではありません 'を返します。 – Manchuwook
@Manchuwookこれを' var self_node = this.node'としてみてください。その後、その変数を使用します。 –
さて、私は、Polymer ready()スコープと 'cy.on( 'クリック'、 'ノード'、(e)=> {self_node = this.data()で' var self_node = this.node'を実行しました。 )}) '変数を使用しましたが、それでもローカル値を設定し、参照されるプロパティを更新していないようです。 – Manchuwook