#javascript #polymer #polymer-1.0
#javascript #polymer #polymer-1.0
Вопрос:
я не совсем могу понять, как .set()
получить свойство для моего элемента polymer из обработчика событий из сторонней библиотеки (fabricjs). Например:
<dom-module id="x-example">
<template>
<div id="objectTools" hidden$="{{objectToolsHidden}}">
<h1> object toolz!</h1>
</div>
<canvas id="c" width="400" height="400"></canvas>
</template>
<script>
Polymer({
is: 'x-example',
properties: {
canvas: Object,
objectToolsHidden: {
type: Boolean,
notify: true,
value: true
}
},
_onObjectSelected: function(e){
//hmm, this is the canvas elem... (???)
this.set('objectToolsHidden', false);
},
_onSelectionCleared: function(e){
this.set('objectToolsHidden', true);
},
ready: function(){
this.canvas = new fabric.Canvas(this.$.c);
var rect = new fabric.Rect({
top : 100,
left : 100,
width : 60,
height : 70,
fill : 'black'
});
this.canvas.add(rect);
this.canvas.on({
'object:selected': this._onObjectSelected,
'selection:cleared': this._onSelectionCleared
});
}
});
</script>
</dom-module>
…метод _onObjectSelected
вызывается, но this.set()
не определен как функция. Как мне получить доступ к своему свойству элемента из обработчика событий области видимости?
кроме того, jsfiddle:http://jsfiddle.net/ysoo8mjg /
Ответ №1:
о!! я могу использовать .bind(this)
при регистрации обработчика событий
this.canvas.on({
'object:selected': this._onObjectSelected.bind(this),
'selection:cleared': this._onSelectionCleared.bind(this)
});