2016-03-23 30 views
34

Vì vậy, tôi có thành phần thanh trượt này sử dụng javascript materializecss. Vì vậy, sau khi nó được trả lại, tôi cần phải thực hiệnGóc 2 thực thi tập lệnh sau khi tạo mẫu

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

Nhưng tôi không hoàn toàn biết nơi để đặt dòng này từ nguyên cảo/góc thẻ remove kịch bản trong các mẫu. Tôi đã bao gồm JQuery trong các tập tin ts và hy vọng sẽ sử dụng hệ thống sự kiện, nhưng điều đó dường như không hoạt động. Ý tưởng nào? Dưới đây là đoạn code của file 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'); 
    } 
} 

Trả lời

53

ngAfterViewInit() của AppComponent là một callback vòng đời gọi kiễu góc sau khi thành phần gốc và đó là trẻ em đã được trả lại và nó phải phù hợp với mục đích của bạn.

Xem thêm https://angular.io/guide/lifecycle-hooks

+0

Xin chào, bạn có thể biết bất kỳ cơ hội nào tại sao thậm chí không bị bắt trước đó. Ngay cả khi phần tử không được hiển thị, tôi vẫn mong đợi sự kiện bắt được sự kiện nhưng không thể hành động .slider vì nó không được hiển thị. –

+0

Thực ra, không. Tôi không sử dụng jQuery bản thân mình. Tôi cũng sẽ mong đợi '$ ('body'). Trigger (...)' để làm việc bất cứ lúc nào, không có vấn đề nếu thành phần được thực hiện khởi tạo hay không. –

+1

Xin chào, tôi biết đó là một câu hỏi cũ nhưng tôi đang gặp sự cố khi cố gắng chạy mã jQuery từ móc 'ngAfterViewInit'. Mã tôi muốn chạy là: '$ ('# item-panel-tabs'). Foundation();' '$ ('# item-panel-tabs'). Foundation ('selectTab', 'objectPanel ');' Vấn đề là phần tử tab (ID '# item-panel-tabs') nằm dưới chỉ thị' * ngIf', chỉ hiển thị khi thành phần nhận được đối tượng, vì vậy khi tôi gọi hàm jQuery, không có trong DOM và nó không hoạt động. Bất kỳ đề xuất nào để sửa lỗi này? – Fel

0

Tôi đã sử dụng phương pháp này (báo cáo 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); 
    } 
} 

nó làm việc cho tôi kể từ khi tôi muốn thực hiện một tập tin javascript SAU COMPONENT LÀM CHO.

Các vấn đề liên quan