Greatym.com Greatym.com - 4 months ago 19
jQuery Question

Angular js : $q resolve issue

To resolve dependency I introduced $q in code. but my function is now not returning anything.

$rootScope.AutoQuote = dtoResource.rc1Step1DTO()
when I console($rootScope); I am not getting anything in result.

autoQuote controller.js

(function () {
"use strict";

angular
.module("autoQuote")
//Do initalization on page load
.run(["$log","$rootScope","$state","dtoResource","questionResource",function($log,$rootScope,$state,dtoResource,questionResource) {
$log.info('Post DTO on page load.');
$rootScope.AutoQuote = dtoResource.rc1Step1DTO()
.then(questionResource.getQuestions)
.then(function(questions){
$rootScope.questions = questions;
console.log('Obtained questions. Assigned to rootscope');
})
.then(function(){
console.log('This should be printed after the above methods are done executing');
console.log($rootScope);
})

}])

// Post DTO
.controller("autoQuoteCtrl", ["$log","$scope","$rootScope","dtoResource","$http","$state", function($log,$scope,$rootScope,dtoResource,$http,$state) {
$scope.onSubmit = function() {
//console.log(angular.element('#save_quote_email').val());
// add check if valid
//call function from your service, and do something with it
$scope.AutoQuote = dtoResource.rc1Step2DTO();
console.log($rootScope);
//console.log($scope);
$log.info('hi, I was invoked on form submit');
$http({
method : 'POST',
url : '/rc1/postDto/'+$state.current.name,
data: {'name': 'praveen', 'email': 'test@gmail.com'},
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8;'
}
//data : { dtoObj: '' }, // pass in data as strings //JSON.stringify(prepareAutoQuoteDTO.postAutoQuoteObj)
// headers : { 'Content-Type': 'application/x-www-form-urlencoded' } // set the headers so angular passing info as form data (not request payload)
})
.success(function(data) {
console.log(data);
if (!data.success) {

} else {
// if successful, bind success message to message
//$scope.message = data.message;
//$state.go('step2');
}
});
};
}]);
}());


dtoResource.js

(function () {
"use strict";

angular
.module("autoQuote")
.factory("dtoResource",["$resource","$q", "$rootScope",dtoResource]);

function dtoResource($resource,$q, $rootScope)
{

console.log('here in dto process.');
var prepareAutoQuoteDTO = {
postAutoQuoteObj : getAutoQuoteObject(),
/*
* store session info
*/
rc1Step1DTO : function(){
var deferred = $q.defer();
console.log('Inside rc1Step2DTO');
var emailId = 'test1@gmail.com';
if (emailId && emailId != '' && emailId != 'Email Address'){
var email = new Email();
email.EmailTypeCd = 'PRIMARY';
email.EmailAddress = emailId;
this.postAutoQuoteObj.ApplicationInfo.GeneralPartyInfo.ContactInfo || new Contact();
this.postAutoQuoteObj.ApplicationInfo.GeneralPartyInfo.ContactInfo.Emails = [];
this.postAutoQuoteObj.ApplicationInfo.GeneralPartyInfo.ContactInfo.Emails.push(email);
}
//$rootScope.AutoQuote = prepareAutoQuoteDTO;
console.log('Exiting rc1Step2DTO');
deferred.resolve('CA');
return deferred.promise;
},

rc1Step2DTO : function(){
var deferred = $q.defer();
/*
* Store Driver information into array object
* Collect driver info into local array and then reassign them to actual DTO object
*/


this.postAutoQuoteObj.SessionInfo.UseExistingSession = false;
this.postAutoQuoteObj.SessionInfo.PageName = 'driver';
this.postAutoQuoteObj.SessionInfo.PreviousPageName = 'cars';
//this.setCLK();
deferred.resolve("CA");
return deferred.promise;
}
};
return prepareAutoQuoteDTO;
}
function getAutoQuoteObject()
{
var autoQuoteObject = new autoQuote(); autoQuoteObject.DriverVehicleInfo = new DriverVehicleInfo(); autoQuoteObject.DriverVehicleInfo.Vehicles = []; autoQuoteObject.DriverVehicleInfo.Drivers = []; autoQuoteObject.ApplicationInfo = new ApplicationInfo(); autoQuoteObject.ApplicationInfo.Discount = new Discount(); autoQuoteObject.ApplicationInfo.GeneralPartyInfo = new GeneralPartyInfo(); autoQuoteObject.ApplicationInfo.GeneralPartyInfo.ContactInfo = new Contact(); autoQuoteObject.ApplicationInfo.MostRecentInsurance = new MostRecentInsurance(); autoQuoteObject.RequestedCoverage = new RequestedCoverage(); autoQuoteObject.RequestedCoverage.PolicyCoverage = new PolicyCoverage(); autoQuoteObject.RequestedCoverage.PolicyCoverage.Coverages = []; autoQuoteObject.RequestedCoverage.VehicleCoverage = []; autoQuoteObject.SessionInfo = new SessionInfo(); return autoQuoteObject;
}
function autoQuote()
{
this.DriverVehicleInfo = null; this.ApplicationInfo = null; this.RequestedCoverage = null; this.SessionInfo = null;
}

function DriverVehicleInfo()
{
this.Drivers = []; this.Vehicles = []; this.DriverVehicleUsages = []; }; var Driver = function(){this.ID = null, this.PersonInfo = null, this.DriverRelationshipToApplicant = null, this.DriverRelationshipToApplicantCd = null, this.DriverLicense = null, this.DriverDetails = [], this.Incident = null, this.IsValid = false}; var PersonInfo = function(){this.FirstName = null, this.Initial = null, this.LastName = null, this.Suffix = null, this.SSN = null, this.GenderCd = null, this.BirthDate = null, this.MaritalStatusCd = null, this.OccupationClassCd = null, this.YearsOccupation = null, this.HighestEducation = null, this.AgeInYears = 0, this.SpouseLicenseStatus = null}; var DriverLicense = function(){this.AgeLicense = null, this.USLicenseStatus = null, this.DriverLicenseNumber = null, this.StateProvCd = null}; var DriverDetail = function(){this.DriverDetailCd = null, this.DriverDetailValue = null, this.DriverDetailDate = null}; var Incident = function(){this.ClaimAccidentsCount = null, this.ViolationsCount = null, this.HasLicenseBeenRevoked = null, this.LicenseSuspensionRevokedDate = null, this.HasRequiredCourtOrderedFinancial = null, this.ClaimAccidents = [], this.Violations = [], this.DUIs = []}; var DUI = function(){this.DateOfDUI = null, this.OtherValues = []}; var ClaimAccident = function(){this.Id = null, this.ClaimAccidentCd = null, this.displayText = null, this.ClaimAccidentDate = null, this.DateDisplayText = null, this.Comprehensive = null, this.Collision = null, this.RentalReimbursement = null, this.MedicalPayment = null, this.PayToOtherParty = null, this.IsInjury = null, this.IsPropertyDamage = null}; var Violation = function(){this.Id = null, this.ViolationCd = null, this.ViolationDate = null, this.displayText = null}; var Vehicle = function(){this.ID = null, this.VehicleHaveVin = false, this.VehicleIdentificationNumber = null, this.VehicleYear = null, this.VehicleMake = null, this.VehicleModel = null, this.VehicleSubModel = null, this.AntiLockBrakeCd = null, this.AntiTheftDeviceCd = null, this.VehicleUseCd = null, this.NumDaysDrivenPerWeek = null, this.DistanceOneWay = null, this.EstimatedAnnualDistance = null, this.OwnershipCd = null, this.RegistrationStateProvCd = null, this.VehIdentificationNumber = null, this.IsCustomizedOrAltered = null, this.OriginalVehicleCost = null, this.IsValid = false, this.VehicleType = null, this.VehicleVinStub = null, this.ShowVehicleAntiLockBrakeInfo = false, this.VehicleCost = null, this.ShowVehicleCost = false, this.DaytimeLights = null}; var DriverVehicleUsage = function(){this.DriverIDRef = null, this.VehicleIDRef = null, this.Usage = null}; var ApplicationInfo = function(){this.GeneralPartyInfo = null, this.Discount = null, this.MostRecentInsurance = null, this.ConsumerContactAuth = null, this.ConsumerInfoAuthorization = null, this.ConsumerContactMobileAuth = null}; var GeneralPartyInfo = function(){this.MainApplicantDriverIDRef = null, this.Address = null, this.PreviousAddress = null, this.ContactInfo = null, this.ResidenceInfo = null, this.ListedVehiclesRegisteredTo = null, this.CreditScore = 0}; var AddressInfo = function(){this.Address = null, this.City = null, this.State = null, this.PostalCode = null, this.County = null}; var PreviousAddress = function(){this.Address = null, this.City = null, this.State = null, this.PostalCode = null, this.County = null}; var Contact = function(){this.Phones = [], this.Emails = []}; var Email = function(){this.EmailTypeCd = null, this.EmailAddress = null}; var Phone = function(){this.PhoneTypeCd = null, this.PhoneNumber = null}; var Residence = function(){this.LengthAtCurrentAddressCd = null, this.ResidenceTypeCd = null, this.NumberDriversInHouseHold = null, this.VehiclesRegistedToInsured = null, this.DriverResidentsFromFL = null, this.CityLimits = null}; var Discount = function(){this.ResidentialInsurancePolicy = null, this.OwnBoat = null, this.OwnMotorCycle = null, this.IsAAAMember = null}; var MostRecentInsurance = function(){this.HasAutoInsurance = null, this.InsuranceCompanyName = null, this.CurrentInsurancePaying = null, this.LengthWithCurrentInsuranceCd = null, this.BodilyInjuryLiabilityLimit = null, this.LengthContinuouslyInsuredCd = null, this.ExpirationDate = null, this.InsuranceCanceledForNonPay = null, this.ClaimDeniedDueToFraud = null}; var RequestedCoverage = function(){this.EffectiveDate = null, this.StateCd = null, this.PolicyCoverage = null, this.VehiclesCoverage = []}; var PolicyCoverage = function(){this.Coverages = []}; var Coverage = function(){this.CoverageCd = null, this.CoverageValue = null}; var VehicleCoverage = function(){this.IsValid = false, this.VehicleIDRef = null, this.Coverages = []}; var SessionInfo = function(){this.SessionId = '', this.SecurityToken = '', this.Zip = '', this.StateCode = '', this.PageName = '', this.PageTheme = '', this.CarrierId = - 1, this.ReturnedCarrierTypes = null, this.CoveragePackage = '', this.UseExistingSession = false, this.QuoteStatus = '', this.SID = - 1, this.SRC = null, this.SRC_QCP = null, this.Referral = null, this.ClientIP = null, this.BrowserType = null, this.CLK = 0, this.QTR = '', this.CCID = '', this.AFF = '', this.PreviousSessionId = '', this.IgnoreErrors = false, this.RetrieveSource = '', this.PreviousPageName = ''
}

}());


Below is plunker with commplete code

http://plnkr.co/edit/Op1QDwUBECAosPUC7r3N?p=preview

Answer

Just looked at the plunker. Forked a new one with the fix. here are the fixes that worked

Plunker link

  • I am setting the $rootScope.AutoQuote in the `getAutoQuoteObject' function.

  • function getAutoQuoteObject needs $rootScope as a dependency. So moved it inside of the factory dtoResource

  • And removed this line which was unnecessary

    $rootScope.AutoQuote = dtoResource.rc1Step1DTO().then.....