2017-08-22 7 views
1

受信エラーでPollListCtrl.runQueryで未定義のプロパティ 'type'を読み取ることができません。 なぜこれが未定義になるのかわかりません。私はここにオブジェクトがあることを確認するために、listConfigが作成されたconsole-loggeds.controller.jsというコンソールログを記録しました。応答はAngularJSコンポーネントのバインディングがオブジェクトを渡さない

{type: "all", filters: {pollsCreated: Array(3)}} 

である。しかし、私は、プロファイル-polls.htmlでコンポーネント・リストにポーリングするためにそれを渡すようにしようとすると、それは未定義にまで来ています。以下は、関連ファイルの要点です。なぜこれが正しく通らないのか誰にでも教えてもらえますか?

https://gist.github.com/RawleJuglal/fa668a60e88b6f7a95b456858cf20597

+0

あなたは57行にブレークポイントを置いた場合、queryConfigは定義されていませんか? –

+0

私のデバッグのスキルは強くないので、クロムでそれを見る方法を分かりませんが、this.Polls.queryの前にqueryConfigのコンソールログを作成しましたが、それはそれほど得られません。私はそれが41行目でエラーを投げていると仮定します。 –

答えて

0

私はあなたのコンポーネントのウォッチャーを定義する必要があると思います。開始時にlistConfigは定義されておらず、ある遅延(次のダイジェストサイクル)後にのみ値を取得します。そこで、ウォッチャーを作成し、ifのステートメントの後にキャンセルします。あなたのangularjsアプリケーションで$スコープを使用しないでください

app.component('pollList', { 
    bindings: { 
    listConfig: '=' 
    }, 
    templateUrl: 'poll-list.html', 
    controllerAs: 'vm', 
    controller: PollListCtrl 
}); 

function PollListCtrl($scope) { 

    var vm = this; 

    function run(){ 
     console.log(vm.listConfig); 
    } 


    var cancelWatch = $scope.$watch(function() { 
     return vm.listConfig; 
    }, 
    function (newVal, oldVal) { 

     if (newVal !== undefined){ 
      run(); 
      cancelWatch(); 
     } 
    }); 
} 

Demo plunkr

+0

申し訳ありませんが、変更はありませんでした。また、configのcontrollerAsが同じことをすることは私の理解であった。そうじゃないの? –

+0

@RawleJuglalが私の答えをデモで更新しました –

0
  • ngOnInit()ライフサイクルフックを使用して、コンストラクタではなくバインディング値にアクセスできます。

    ngOnInit(){

    $ ctrl.listConfig = {タイプ:[すべて]}。

    $ ctrl.limit = 5;

    }

関連する問題