如何使用angular捕获更新DOM事件?

时间:2016-06-27 11:15:26

标签: angular select2

我有桌子,tablecell中有select2控件。 在ngAfterViewInit方法中,我称之为jQuery('.select2Class').select2(...); 我有可能在表格中添加新行 现在代码就像

addNewRow(){
    this.rows.push({name:'new row'});
    setTimeout(function(){
        jQuery('#newSelect2Id').select2(...);
    },10);
}

我需要使用setTimeout,因为没有事件angularReady 我知道它很糟糕,但我不知道如何纠正它。

1 个答案:

答案 0 :(得分:3)

不像<select2-input></select2-input>那样直接使用jQuery,而是创建专用的自定义元素,例如*ngFor

然后在组件模板中,您将拥有正常的<tr *ngFor="let row of rows"> <td> <select2-input [options]="select2Options" (select)="row.selectedOption = $even.value" ></select2-input> </td> </tr> 指令渲染行。像这样:

OnInit

现在,关于这个自定义元素的实现。最简单的实现只是实现nativeElement接口并使用$.fn.select2插件初始化select2:select。您还可以实现必要的输入和输出,如上例所示,您可能希望将一些select2选项传递给组件并对 <?php global $post; // READY THE $post FOR USE IN THE setup_postdata() FUNCTION $field = the_field('category_num'); $args = array( 'numberposts' => 200, 'order'=> 'DESC', 'category' => $field); // NOTICE THE USE OF numberposts RATHER THAN posts_per_page $postsList = get_posts( $args ); foreach ( $postsList as $post ){ setup_postdata( $post ); } wp_reset_postdata(); ?> 事件作出反应。