我必须使用Typescript:
按照AngularJs 1.5.8进行设置我有一个包含目录的父组件(2D项目数组)。从我将目录中的每个列表传递给子组件:
...
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()中打印项。我不确切地知道我做错了什么因为唯一的打印是 undefined 。 我环顾四周,无法找到合适的解决方案。所以我希望你能帮助我。
答案 0 :(得分:3)
回调时,请执行以下操作:this.callback({item : item});
,传递为对象。