したがって、私はこのスライダコンポーネントにmaterializecss javascriptを使用しています。それがレンダリングだ後だから、私は角2はテンプレートレンダリング後にスクリプトを実行します
$(document).ready(function(){
$('body').on('Slider-Loaded',function(){
console.log('EVENT SLIDER LOADED');
$('.slider').slider({full_width: true});
$('.slider').hover(function() {
$(this).slider('pause');
}, function() {
$(this).slider('start')
});
});
});
を実行する必要がある。しかし、テンプレートでtypescriptです/角度削除スクリプトタグので、このラインをどこに置くかはかなり知っている私にはありません。私はtsファイルにJQueryを組み込み、イベントシステムを使用したいと考えていましたが、それはうまくいかないようです。何か案は? AppComponent
の
/// <reference path="../../typings/main.d.ts" />
import {Component, Input} from 'angular2/core';
import { RouterLink } from 'angular2/router';
import {ServerService} from './server';
@Component({
selector: 'slider',
templateUrl:'/app/template/slider.html',
directives: [ ],
})
export class SliderComponent {
@Input() images;
private server: ServerService;
public constructor(server: ServerService){
this.server = server;
}
ngOnInit() {
console.log("THROWING EVENT");
$('body').trigger('Slider-Loaded');
}
}
ちょっと前に偶然がキャッチされていなかった理由を知っているだろうか?要素がレンダリングされなかったとしても、jqueryはイベントをキャッチすることは期待されましたが、レンダリングされていないため.sliderを操作できません。 –
実際、いいえ。私はjQueryを自分で使用しません。コンポーネントが初期化されているかどうかにかかわらず、いつでも '$( 'body')。trigger(...)'が動作することを期待しています。 –
こんにちは、これは古い質問ですが、 'ngAfterViewInit'フックからjQueryコードを実行しようとして問題が発生しています。実行したいコードは: '$( '#item-panel-tabs')。foundation();' '$( '#item-panel-tabs')。foundation( 'selectTab'、 'objectPanel '); ' 問題は、タブ要素(ID'#item-panel-tabs')は '* ngIf'指示文の下にあり、コンポーネントがオブジェクトを受け取ったときにのみ表示されるので、jQuery関数を呼び出すとDOMではなく、動作しません。これを修正するための提案? – Fel