私がやっているのは、サービス中のJSONオブジェクトを拡張し、それをコントローラに渡すことです。サービスからコントローラへの.map関数の拡張オブジェクトを約束通り返す
JSONがバックエンドコールを行う別のサービスからサービスを開始しました。
//get games config object from another service
gamesConfig: gamesConfigService.gamesConfig(),
// prepare name of games icons. This is support function executed in next method
transformSpace: function(subject) {
var ensuredSubject = subject.toString().toLowerCase();
var transformedSubject = ensuredSubject.replace(/ /g, '_');
return transformedSubject;
},
//add iconname property to game config object
extendGameConfig: function() {
var that = this;
this.gamesConfig
.then(function (response) {
console.log(response.data); // this works and console.log my JSON
response.data.map(function(obj) {
return new Promise(function(res){
angular.extend(obj, {
iconname: that.transformSpace(obj.attributes.name) + "_icon.png"
});
});
});
}, function() {
console.log('errror');
});
これは、一方の支持方法transformSpace
、正しくデータを渡していない主なメソッドが含まれています
コードは、私がコメントやconsole.logsを追加し、かなり複雑です。私がして、コントローラにこの約束を受け取るしようとしている
(私が思う):
theService.getGamesObj.extendGameConfig()
.then(function (response) {
$scope.allGames = response;
console.log($scope.allGames);
}, function() {
console.log('err')
});
そして私は、ビューでそれを使用します。次に、上記のコードは動作し、私に次のエラーを与えるものではありませんについて:
TypeError: Cannot read property 'then' of undefined
あなたの 'extendGameConfig' functio nは何も返しません。 'return this.gamesConfig.then(...'?)これはあなたが得ている型エラーを説明するものです。 – CRice
あなたはこのコードのどこにでも 'gamesConfig'を定義していません。あなたはそれを返す必要があります**後で新しい 'then'で** –
Aleksey Solove私はこの最初のコードの前にgamesConfigを定義しました。私は編集しましたが、とにかくそれはバックエンドを呼び出して応答を返す別のサービスから来ています。私はエラーがなくなったという返事を追加しましたが、コントローラの 'console.log'レスポンスが未定義です。 – BT101