2016-07-26 6 views
0

私の問題は、私のポリマーコンポーネントが、自分の振舞いで定義された変数にバインドされたデータではないようです。これがサポートされていないか、私の欠陥のある考えが何であるかを知りたいですか?ポリマー - ビヘイビア内の変数へのデータのバインド

私は行動を使用して誰にもグローバル状態の一種として使用私の行動の変数を共有しています

<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)を呼び出して、正しい値を出力させることができます。

お願いします。

+0

このJS Binはあなたのコードに似ていますか? http://jsbin.com/totoma/edit?html,js,output –

+0

@TomaszPluskiewiczそれは似ていますが、Behaviorはready()でいくつかのajax呼び出しを持ち、コールバックを処理するメソッドは、動作。 – jbu

+0

'show'ではなく' this.show'の値を​​変更し、 'attached'と' onRequestSucceed'が 'properties'オブジェクトの外側にあることを確認してください。 – a1626

答えて

0

sigh ...実際のコードはajaxでjsonレスポンスを受け取り、ブール値に変換しようとしますが、実際には文字列です(これは私のapiではありません)ので、データを乱す変換エラーが発生します結合。

関連する問題