0
コントローラのデータをロードできません。未定義です。AngularJS:工場出荷時のコントローラのデータjsonをロード
app.factory('factoryLlamada', function($http,$q) { return{
cargar: function(archivo) {
var deferred = $q.defer();
$http.get(archivo).success(function(data) {
deferred.resolve(data);
})
.error(function(error) {
deferred.reject(error);
});
return deferred.promise;
}
}});
そして、このコントローラ::私は問題であるかわからない
app.controller('ctrlProducts', function(factoryLlamada) {
this.saludo = 'Hola'; //this work's
factoryLlamada.cargar('prueba.json').then(function(data) {
this.datos = data;
console.dir(data); //return json object (ok)
console.dir(datos); //return undefined
})
.catch(function(error) {
console.log('Se ha producido un error: '+error);
});
});
...
をちょうどずっと簡潔になります
$http.get
によって返さ約束し、コードを再利用ホラー "が動作します – amanuel2' this.saludo'の 'this'はコントローラがコールバックの外側にあることを示します。しかし、これは 'this.datos'の場合ではありません。 –
この回答は正しいです。 $スコープではなく、 'this'を使って慎重に扱わなければなりません。この場合、入れ子関数の 'this'はコントローラの 'this'と同じではありません。 – jbrown