angularjs - Angular 2: Apelarea unei funcții Javascript din typescript
Creez o aplicație Angular 2 în care am un component care ar trebui să afișeze o listă de date în vizualizarea corespunzătoare. Datele urmează să fie încărcate printr-un serviciu dintr-un fișier JSON, care ar trebui să ia datele dintr-o funcție JavaScript care este un scraper web. Această funcție JavaScript ar trebui să fie apelată atunci când componentul este inițializat, după care serviciul va fi pornit.
Am căutat peste tot pe SO și în alte locuri, dar nu am găsit un mod definitiv de a executa o funcție JavaScript dintr-un component. Cea mai apropiată abordare pe care am găsit-o a fost într-o postare SO care implementează o interfață TypeScript pentru a încărca funcția JavaScript. Problema este că nu este clar din postare ce funcție JavaScript este sau cum trebuie utilizată în component. În cazul meu, trebuie să apelez metoda request(), pe care am încapsulat-o în următoarea clasă bazată pe acest tutorial:
Scraper = function(url){
request(url, function(error, response, html){
if(!error){
var $ = cheerio.load(html);
var title, release, rating;
var json = { title : "", release : "", rating : ""};
$('.header').filter(function(){
var data = $(this);
title = data.children().first().text();
release = data.children().last().children().text();
json.title = title;
json.release = release;
})
$('.star-box-giga-star').filter(function(){
var data = $(this);
rating = data.text();
json.rating = rating;
})
}
fs.writeFile('output.json', JSON.stringify(json, null, 4), function(err){
console.log('File successfully written! - Check your project directory for the output.json file');
})
// Finally, we'll just send out a message to the browser reminding you that this app does not have a UI.
res.send('Check your console!')
}) ;
}
În interiorul fișierului TypeScript mă gândeam să implementez ceva de genul acesta:
interface Scraper {
request: INIT;
}
interface INIT {
init: Function;
}
declare var Scraper: Scraper;
și apoi în funcția ngOnInit() din interiorul clasei componentului:
ngOnInit(): void{
//Calling javascript function?
Scraper.request.init();
//Service to load JSON
this._productService.getProducts()
.subscribe(products => this.products = products,
error => this.errorMessage = <any>error);
}
Nu am nicio idee dacă aceasta este utilizarea corectă pentru interfața de aici pentru că este greu de spus din documentația TypeScript
Cred că poate că sunt pe drumul cel bun aici, dar nu sunt chiar sigur. Cum ar trebui să implementez interfața pentru a executa metoda request() la inițializarea componentei?