2017-09-08 34 views
0

我有TypeScript中的AngularJS組件news.component.ts,它調用google.service.ts通過一些將XML轉換爲JSON(不重要)的服務來獲取新聞RSS。爲什麼我在我的AngularJS(TypeScript)組件中獲取這些錯誤?

所以我在NewsComponent這個方法:

getNewsHeadlines(): any { 
    this.googleService.getNewsHeadlines().then(headlines => { 
     this.newsHeadlines = headlines; 
     this.$scope.$apply(); 
    }); 
    return; 
} 

我有這個模型每個新聞項定義:

export interface NewsHeadline { 
    title: string; 
    content: string; 
    description: string; 
    link: string; 
} 

我有這樣的方法在GoogleService服務:

getNewsHeadlines() { 
    const feed = 'http://rss.newsru.com/top/big/'; 
    const url = 'https://api.rss2json.com/v1/api.json?rss_url=' + encodeURIComponent(feed); 
    return this.$http.get(url).then((response: any) => { 
     let items = response.data.items; 
     let results = items.map(result => { 
      let newsHeadline: NewsHeadline = { 
       title: 'string', 
       content: 'string', 
       description: 'string', 
       link: 'string' 
      }; 
      return newsHeadline; 
     }); 
     return this.$q.all(results); 
    }); 
}; 

爲什麼我一直在Chrome控制檯中收到這些錯誤消息?

我在GoogleService中的getNewsHeadlines方法是否正確寫入?

enter image description here

是什麼意思,當我點擊鏈接錯誤,還有噸力所能及不可讀的垃圾,這並不說明什麼的。

+0

我認爲錯誤是因爲你正在做的'$範圍$適用()'當消化週期已在進行中。 Angular的內置服務,包括'$ http'自動觸發摘要循環。您不必在代碼中執行此操作。 –

+0

是的,您正在使用'$ scope。$ apply()'不必要的。 '$ http'服務嵌入消化控制,因爲它位於angularjs上下文中。例如,您應該在外部發射器中使用'$ apply',例如直接附加到DOM的事件。 –

回答

0

您的方法不需要$ scope。$$ apply。正在由httpservice處理,正如角度上下文一樣。

這是應該的樣子:

getNewsHeadlines(): any { 
    this.googleService.getNewsHeadlines().then(headlines => { 
     this.newsHeadlines = headlines; 
    }); 
    return; 
} 
相關問題