Polymer 1.5を使用していますが、実際には "this"変数が外部にマップされないようにする必要があります。 私はtypescriptがこれをいくつかはvalid reasonsにしていることを知っています。変数の上にこれを参照してください"this"が書き直されないようにするTypeScriptコンパイル
$this = this;
var MyBehavior = MyBehavior || {};
MyBehavior.FormSubmit = {
_setInvalid: (query, status) => {
var elems = Array.prototype.slice.call(Polymer.dom($this.root).querySelectorAll(query));
elems.forEach(element => {
if (status) {
element.setAttribute('invalid', status);
}
else {
element.removeAttribute('invalid');
}
});
}
};
:
declare var Polymer: any;
var MyBehavior = MyBehavior || {};
MyBehavior.FormSubmit = {
_setInvalid: (query, status) => {
var elems = Array.prototype.slice.call(Polymer.dom(this.root).querySelectorAll(query));
elems.forEach(element => {
if (status) {
element.setAttribute('invalid', status);
}
else {
element.removeAttribute('invalid');
}
});
}
};
はその後にマッピングされ得るのだろうか?これでコードが破られます。私が "this.root"やそれに相当するものにアクセスできれば、それは不思議に過ぎません。 TypeScriptが "this"を動かさないようにする方法はありますか?
P.S:PolymerTSについて知りました!残念ながら、Polymerオブジェクトからビヘイビアを呼び出すことはできません。
矢印機能(=>)をサポートしているJavaScriptでも、これはキャプチャされたかのように機能します。古い学校の「この」行動が必要な場合は、古い学校の機能を使う必要があります。 – recursive