2
AngularJSで1.5コンポーネントを使用しようとしています。 $ HTTPを使用してJSONファイルを取得し、約束を返すサービスがあります。次に、私のコンポーネントコントローラで約束を解決し、this.work
を使用してコントローラの値に割り当てます。これは私のHTMLページには表示されませんが。これが混乱している場合、私はコードにコメントを入れて少し説明しました。HTTP Angular 1.5を取得する
私の理解では(私のコントローラで)非同期的に起こっていますが、なぜそれが解決されたら、私は表示されていないのですか?ビューで変数$ctrl.work
に変更されました。代わりに私は変数から値を得ることはありません。
// Component
(function() {
angular.module('development')
.component('pgDev', {
templateUrl: 'app/development/development.template.html',
controller: ['workList', function (workList) {
//this.work = 'HELLO WORLD'; // <- this shows up in the html if uncommented
workList.getWorkItems().then(function (d) {
console.log(d.test); // outputs: myjsonfile
this.work = d.test; // <- this doesnt show in the html
});
}]
})
}());
// HTTP Get Service
(function() {
angular.module("development").factory("workList", ["$http",
function ($http) {
return {
getWorkItems: function() {
return $http.get("data/worklist/worklist.json").then(function (d) {
return d.data;
});
}
}
}])
})();
// html
workitems: {{$ctrl.work}}
ありがとう。あなたが知っているか、正しい方向に私を指すことができるなら、 'this'を使ってコントローラー内のものを割り当てることは、関数内で' this'を使用してコントローラに何も割り当てることができないという意味では問題があるようです。あなたの答えは、これのコンテキストはコントローラのコンポーネントに関連していないでしょう。だから、矢印関数を使うのではなく、どのようにすればいいのですか? – okayilltry
参照を保存して、 'this'を冒頭に訂正して後で使用することができます:' const self = this; ... self.work = d.test'。しかし、これは古い学校です。矢印機能は最も純粋な解決策です。 – dfsq