2017-06-23 4 views
0

出力結合AngularJS介してパラメータを渡す:Iが活字体を使用して、AngularJs 1.5.8とセットアップを以下に抱え

I親コンポーネントWICHを有するカタログ(アイテムの2次元アレイ)を含みます。

... 
export class ParentController { 

    private catalog = []; //contains a list of lists 

    ... 

    private printCallback(item: any): void { 
     console.log(item); 
    } 
} 

とテンプレート::

<div ng-repeat="list in $ctrl.catalog"> 
    <child content="list" callback="$ctrl.printCallback(item)"></child> 
</div> 

今、私は、リスト内のすべての項目の上に再び反復子コンポーネントで、私は子コンポーネントにカタログ内の各リストを渡すところから。

export class ChildComponent implements IComponentOptions { 
template: any = require('./child.component.html'); 
public bindings: any = { 
    content: '<', 
    callback: '&' 
}; 
controller: any = ChildController; 
} 

export class ChildController { 

    public content: Array<any>; 
    public callback; 

    ... 

    public onTrigger(item: any): void { 
     this.callback(item); 
    } 
} 

と子テンプレート:今

<div ng-repeat"item in $ctrl.content"> 
    <button ng-click="$ctrl.onTrigger(item)">{{item.name}}</button> 
</div> 

私は印刷に見えることはできません私は、リストから項目をクリックしたときに、私は親が私が上でクリックしたアイテムを知りたいです親コンポーネントのアイテムprintCallBack()です。私が間違っていることを正確に知らないのは、印刷されている唯一のものはで、定義されていないのはです。 私は周りを見回し、実際の解決策を見つけることができませんでした。だから私を助けてくれることを願っています。

+1

呼び出し中に 'this.callback({item:item});'を試してください。 – anoop

+1

@anoopまあ、ちょうど私の日を作った。私はそれが細部にあることを知っていましたが、私はそれに私の指を置くことができませんでした。あなたは私がそれを受け入れることができるように答えるつもりですか? – Tomato

答えて

1

コールバック中は、次のようにします。this.callback({item : item});、オブジェクトとして渡します。

関連する問題