コンポーネントのNg-repeatは、コントローラの$ http.thenから課金されたデータを表示できません。何が間違っているのですか? app.jsでAngularJS 1.5コンポーネントのコントローラでhttpメソッドからデータを管理する
サービス呼び出し残り方法:
<tr ng-repeat="channel in $ctrl.channels">
<td>{{ channel.name }}</td>
<td>{{ channel.sport }}</td>
(...)
(と展開:ビュー内のデータを表示しようとしているcomponent.js
function channelListController(dataService){
this.channels = [];
/** If i create var like this, this works, but i want load from http method:
this.channels = [{id:1, name: "xxxxx", description: "xxxxxxx", sport: "xxxx"}]**/
dataService.loadData().then(function(d) {
console.log(d); //This console.log is showing DATA correctly!
this.channels = d;
});
で
app.service('dataService', dataService);
function dataService ($http) {
return {
loadData: loadData
}
function loadData() {
var promise = $http.get("http://example.com/channels").then(function (response) {
res = response.data;
});
return promise;
}
データのロードhttp-server)
チャネルが表示されていません。 channelという名前のデータを持つvarを作成すると、channelListControllerのcatch http.methodの前にチャンネルが表示されますが、コントローラの ".then"にデータを書き込むと何も表示されません。トレースが.thenに入り、http getメソッドがデータを正しく受信していますが、データを 'channels' varにロードできません。
THANKS !!
を修正する必要があります(つまり、(関数(d){this.channels = d;})。bind(this) ')。さもなければ、 'this.channels'はあなたが期待する' channels'変数を更新していません。 – miqid
@miqidありがとう、それは働いている! –