У меня проблема, я не могу решить (извините за то, что многие вопросы, но угловые убивают меня).
мой контроллер:
friendsApp.controller('friendsController', ['$scope','friendsFactory','secondFactory', function($scope, friendsFactory, secondFactory){
$scope.girlFriendName = friendsFactory.girlFriend();
secondFactory.getCity(function(data) {
$scope.city = data;
console.log($scope.city[0].Name);
});
}]);
Моя фабрика:
friendsApp.factory('secondFactory', function ($http){
return {
getCity: function(callback) {
// HOW TO GET THE VALUE FROM THE CONTROLLER???
var value = 5;
$http.get('http://localhost:8888/sqlapi/public/singleapi/' + value).success(callback);
}
}
});
Для целей тестирования я написал значение вручную в Factory. Но я не знаю, как вставить его из контроллера. Кто-нибудь может мне помочь? Или подтолкнуть меня в правильном направлении?
Вы передадите переменную так же, как и в текущий момент, когда вы выполняете функцию обратного вызова:
контроллер:
secondFactory.getCity(var, function(data) {
$scope.city = data;
console.log($scope.city[0].Name);
});
который на вашем заводе будет называться как таковой:
Фабрика:
return {
getCity: function(var, callback) {
alert(var);
$http.get('http://localhost:8888/sqlapi/public/singleapi/' + value).success(callback);
}
}
Тем не менее, вы должны использовать.success() вместо передачи функции обратного вызова, вернув фабрику весь ваш запрос $ http.
Фабрика:
return {
getCity: function(var) {
alert(var);
return $http.get('http://localhost:8888/sqlapi/public/singleapi/' + value);
}
}
контроллер:
secondFactory.getCity(var).success(function(data) {
console.log(data);
});
Я думаю, что ты немного смущаешься. Просто верните обещание обратно на контроллер:
На вашем заводе:
getCity: function(value) {
return $http.get('http://localhost:8888/sqlapi/public/singleapi/' + value);
}
Затем в вашем контроллере:
secondFactory.getCity('5').then(function (data) {
$scope.city = data;
console.log($scope.city[0].Name);
});