У меня есть данные POST для извлечения в проекте Angular.js. Это моя фабрика:AngularJS: Правильный способ возврата объекта на заводе?
angular.module('mtApp').factory('getKey', function($http) {
return {
getData: function(data) {
var key='';
return $http({
url: '../php/key_gen.php',
method: "POST",
headers: {'Content-Type': 'application/json'}
}).success(function (data) {
console.log(data); //value is right as expected
return data;
})
.error(function (data, status, headers, config) {
console.log('Erro : ' + status + ' ' + headers);
});
}
}
});
Путь I'm получения данных является:
$scope.key = 'ok';
getKey.getData()
.success(function($scope,data){
$scope.key = data.GeneratedKey;
console.log(data.GeneratedKey); //undefined
console.log(data); //200 o.O
});
console.log($scope.key); //still 'ok' O.o
Как вы можете увидеть в моем коде у меня есть несколько console.log вызовов. При запуске приложения единственное, что я вижу:
mtapp.controller.js:13 ok
mtapp.app.js:52 Object {GeneratedKey: "d1bc7a5e840a6c24d87b90dde9e075de1f0e3b34978ca9f319…69d839b4e2a004e1f8d728939867afe189cfb8848c6a8ee38"}
mtapp.controller.js:9 undefined
mtapp.controller.js:10 200
Значение в линии mtapp.app.js: 52 должны быть такими же, как mtapp.controller.js: 10. Но объект с завода имеет только значение 200, когда я пытаюсь посмотреть в журнале ...
Моя цель получить значение из JSON на заводе (GeneratedKey) к контроллеру (в $ scope.key).
Что я делаю неправильно? :(
Почему вы принимаете первый аргумент обратного вызова успеха как $ scope? Судя по обратному вызову, который вы использовали на своей фабрике, вы знаете, что вместо этого должны быть данные ... вторым аргументом является код состояния. –
Я должен быть '.success (function (data, $ scope) {'? –
'.success (function (data, statusCode) {' –