私の問題は、私のポリマーコンポーネントが、自分の振舞いで定義された変数にバインドされたデータではないようです。これがサポートされていないか、私の欠陥のある考えが何であるかを知りたいですか?ポリマー - ビヘイビア内の変数へのデータのバインド
私は行動を使用して誰にもグローバル状態の一種として使用私の行動の変数を共有しています
<script>
var StackOverflowBehavior = {
properties: {
show: {
type: Boolean,
value: false,
notify: true
}
},
attached: function() {
$.ajax({
type: 'GET',
url: 'http://myRestApiURL',
success: this.onRequestSucceed,
error: this.onRequestFailed
});
},
onRequestSucceed: function(response) {
this.show = true; // i hardcoded this at the moment to make sure it changes. console logging shows that the variable is getting changed. also tried changing this to this.show
}
今、私は行動に私のポリマー成分をフックアップ:
<template is="dom-if" if="{{show}}">
<!-- SOME ELEMENTS HERE -->
</template>
Polymer({
is: "my-polymer-component",
behaviors: [
StackOverflowBehavior
],
最初は、show変数にバインドされたテンプレートは最初のStackOverflowBehavior.showにバインドされているため、テンプレートは表示されませんが、showがtrueになるとテンプレートは表示されません。同様に、私はStackOverflowBehaviorでshow = trueを初期化すると可視になりますが、show = falseに設定すると、テンプレートは消えません。
これは、show-variableを変更したことを公開するためにiron-signalを使用する回避策でした。次に、各ポリマー成分は、シグナルを受信するときに新しいショー変数に設定されるローカルショー変数を有する。各ポリマー成分のテンプレートは、その局所変数に結合されている。これは仕事です。しかし、ビヘイビアーで共有変数にバインドされていると、それは動作しません。
編集:添付された関数から変数を更新すると、共有グローバルビヘイビアへのデータバインディングが変更されたようですが、ユーザー定義関数から変数を変更した場合はそうではありません。データバインドされたテンプレートを持つポリマーコンポーネントから、ready()メソッド内からconsole.log(show)を呼び出して、正しい値を出力させることができます。
お願いします。
このJS Binはあなたのコードに似ていますか? http://jsbin.com/totoma/edit?html,js,output –
@TomaszPluskiewiczそれは似ていますが、Behaviorはready()でいくつかのajax呼び出しを持ち、コールバックを処理するメソッドは、動作。 – jbu
'show'ではなく' this.show'の値を変更し、 'attached'と' onRequestSucceed'が 'properties'オブジェクトの外側にあることを確認してください。 – a1626