javascript - callback issue in angularjs directive -
i facing call problem when calling service function
here function defined in registrationservice
function hasuseraccesstolevel(incentivelevel, callback, showregistrationview) { var url = "..."; httpwrapperservice.get(url) .then( function success(data) { var hasaccess = incentivelevel <= data.level; callback(hasaccess); if (showregistrationview && hasaccess == false) { showregistrationviewforlevel(incentivelevel); } }, function error(errorobject) { alert("user has not access\r\ntodo : show popup registration/login"); } ); return false; } and in directive using function
function checkauthentication() { registrationservice.hasuseraccesstolevel(2, function (hasaccess) { if (hasaccess == false){ return false; } else{ return true; } }); } function loaddocuments() { var target=checkauthentication() if(target) { //load both private , public } else { // load public } } now problem facing , have function loadocuments , when user logged in should come inside if(target) block, when debuggin function saying target undefined , hence control going else part , wrong. know there callback issue dont know how rectify it.
any appriciable. thanks
you shall use $q service. checkauthentication() return undefined because hasuseraccesstolevel() asynchronys , @ time of call hasn't return value. solution return promise object.
you code can written this:
function checkauthentication() { var defer = $q.defer(); registrationservice.hasuseraccesstolevel(2, function (hasaccess) { defer.resolve(hasaccess); }, function () { defer.reject(); }); return defer.promise; } function loaddocuments() { checkauthentication().then(function (target) { if (target) { //load both private , public } else { // load public } }); }
Comments
Post a Comment