NgFor和JQuery没有按预期工作

时间:2016-05-06 13:05:30

标签: jquery angular

我在点击时ngForjQuery合作时遇到问题。这里的问题是(我认为),在ngFor完成渲染之前,jquery附加到DOM。这是plnkr。如您所见,如果您单击任何硬编码为html的li元素,控制台日志将触发('clicked on li')。但是,如果单击ngFor创建的html,它将不再触发控制台日志。

我能做些什么,让它适用于ngFor创建的HTML?

由于

1 个答案:

答案 0 :(得分:2)

这是因为您在实际收到数据之前注册了点击处理程序。它们使用HTTP请求异步加载。

如果您在此之后注册处理程序并且视图刷新,您将在控制台中看到消息:

constructor(private myService: MyService){
  console.log('myArr before', this.myArr);
  myService.getAsync().subscribe(success=>{
    this.myArr = success;
    console.log('myArr received');
  });
}

registerClickHandler() {
  $('li').on('click', function(e) {
    console.log('clicked on li');
  });
}

那就是说,你应该使用Angular2的事件支持:

<ul>
  <li *ngFor="#obj of myArr" (click)="logClick(obj)">{{obj.name}}</li>
</ul>

请参阅此plunkr:http://plnkr.co/edit/aAmUQL?p=preview