2016-03-23 11 views
34

तो मेरे पास यह स्लाइडर घटक है जो materializecss जावास्क्रिप्ट का उपयोग करता है। तो बाद यह प्रदान की गई है, मैं निष्पादित करने के लिएटेम्पलेट प्रस्तुत करने के बाद कोणीय 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') 
     }); 
    }); 
}); 

जरूरत है लेकिन मैं नहीं जानता है, जहां काफी के बाद से टेम्पलेट्स में टाइपप्रति/कोणीय निकालने स्क्रिप्ट टैग इस लाइन डालने के लिए। मैंने टीएसई फाइलों में JQuery शामिल किया है और इवेंट सिस्टम का उपयोग करने की उम्मीद कर रहा था, लेकिन ऐसा लगता है कि यह काम नहीं करता है। कोई विचार? यहाँ ts फ़ाइल का कोड है:

/// <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'); 
    } 
} 

उत्तर

53

AppComponent की ngAfterViewInit() कोणीय कॉल जड़ घटक के बाद एक जीवन चक्र कॉलबैक है और यह बच्चों में प्रस्तुत किए गए है और यह अपने उद्देश्य के लिए फिट होना चाहिए।

भी https://angular.io/guide/lifecycle-hooks

+0

अरे, क्या आपको किसी भी मौके से पता चल जाएगा कि यहां तक ​​कि पहले भी नहीं पकड़ा गया था। यहां तक ​​कि यदि तत्व प्रदान नहीं किया गया था, तो मुझे उम्मीद है कि घटना को पकड़ने के लिए jquery की उम्मीद है, लेकिन इसे प्रदान नहीं किया जा सका क्योंकि यह प्रदान नहीं किया गया था। –

+0

असल में, नहीं। मैं स्वयं jQuery का उपयोग नहीं करता हूं। मैं भी '$ ('बॉडी') की अपेक्षा करता हूं। ट्रिगर (...) 'किसी भी समय काम करने के लिए, इससे कोई फर्क नहीं पड़ता कि घटक प्रारंभ करना है या नहीं। –

+1

हाय, मुझे पता है कि यह एक पुराना सवाल है, लेकिन मुझे 'ngAfterViewInit' हुक से jQuery कोड चलाने की कोशिश करने में समस्या आ रही है। मैं जिस कोड को चलाने के लिए चाहता हूं वह है: '$ ('# आइटम-पैनल-टैब')। नींव();' '$ ('# आइटम-पैनल-टैब')। नींव ('selectTab', 'objectPanel '); ' समस्या यह है कि टैब तत्व (आईडी' # आइटम-पैनल-टैब') '* ngIf' निर्देश के तहत है, केवल तभी दिखाया जाता है जब घटक ऑब्जेक्ट प्राप्त करता है, इसलिए जब मैं jQuery फ़ंक्शन को कॉल करता हूं डोम में नहीं है और यह काम नहीं करता है। इसे ठीक करने के लिए कोई सुझाव? – Fel

0

देखें मैं इस विधि (here सूचना)

export class AppComponent { 

    constructor() { 
    if(document.getElementById("testScript")) 
     document.getElementById("testScript").remove(); 
    var testScript = document.createElement("script"); 
    testScript.setAttribute("id", "testScript"); 
    testScript.setAttribute("src", "assets/js/test.js"); 
    document.body.appendChild(testScript); 
    } 
} 

यह मेरे लिए काम किया के बाद से मैं घटक गाया के बाद एक JavaScript फ़ाइल क्रियान्वित करना चाहता था का उपयोग किया है।

संबंधित मुद्दे