Здесь купон - это параметр передачи моей ng-модели из контроллеров. я получаю данные ответа. Я не знаю, как получить этот ответ от завода к услугам.
пожалуйста помогите..
var factmodule=angular.module("FactModule",["ngResource"]);
factmodule.factory("CouponFactory",function($resource){
var couponinfo;
var coupondata
return{
getcoupon:function(coupon){
var user=$resource("http://demo.foodzard.in/api/promocode?code="+coupon.offer);
user.get(function(data){
couponvalue=data
console.log(data);
return couponvalue;
})
}
}
})
Код услуги
var servctrl=angular.module("ServModule",["FactModule"]);
servctrl.service("CouponService",function(CouponFactory){
this.checkdata=function(coupon){
CouponFactory.getcoupon(coupon)
}
})
код контроллеров
// getting coupon code from ng-model in the text box
mainCtrl.controller("OrderController",function($scope,CouponService){
$scope.validate=function($scope.coupon){
CouponService.checkdata($scope.coupon)
}
});
Важно понимать, что вызов метода объекта $resource
немедленно возвращает пустую ссылку (объект или массив в зависимости от isArray
). Как только данные возвращаются с сервера, существующая ссылка заполняется фактическими данными. 1
Поскольку return couponvalue;
оператор возникает в функции, которую функция $q
вызывает в будущем, функция фабрики, которая выполняется немедленно, не возвращает никаких данных.
Вместо этого верните пустую ссылку пользователя и используйте свойство $promise
для получения данных.
var factmodule=angular.module("FactModule",["ngResource"]);
factmodule.factory("CouponFactory",function($resource){
var couponinfo;
var coupondata
return {
getcoupon:function(coupon){
var user=$resource("http://demo.foodzard.in/api/promocode?code="+coupon.offer);
//return object reference
return user.get();
}
}
})
Используйте свойство $promise
для извлечения данных из службы $q
.
var servctrl=angular.module("ServModule",["FactModule"]);
servctrl.service("CouponService",function(CouponFactory){
this.checkdata=function(coupon){
return resourceObject = CouponFactory.getcoupon(coupon);
//retrieve future data
resourceObject.$promise.then( onFullfilled(data) {
var couponvalue=data;
console.log(data);
});
});
});
.then
методы обещания принимает функцию в качестве аргумента. Служба $q
сохраняет эту функцию и вызывает ее в будущем, когда XHR завершает работу.
Если factmodule находится в отдельном модуле от servctrl, тогда вам нужно ввести factmodule в servctrl при создании углового модуля
например
var servctl = angular.module('servctl', [
'factmodule']);
})();
то, что я буду делать, это app.factory("CouponFactory", function ($ resource) {... и app.service("CouponService", функция (CouponFactory) {
Затем они находятся в одном модуле и будут доступны