Sono nuovo a angularjs. Ho problemi ad accedere al valore restituito dal servizio angularjs nel suo controller. seguito è il codice di controllo:Come fare in modo che il controller attenda che il servizio restituisca un valore e come accedere al valore restituito nel controller?
'use strict';
app.controller('AdminTaskCtrl', function ($scope, Search) {
$scope.buildEnquiry = function (collegeId,) {
Search.getIdByEmail(collegeId).then (function (result) {
$scope.uId = result;
console.log($scope.uId);
});
};
});//controller ends here
E il codice di servizio di ricerca è la seguente:
'use strict';
app.factory('Search',function ($firebase, FIREBASE_URL, $rootScope) {
var simpleuser = "";
getIdByEmail: function(counsellorEmail) {
var collegeuserArray = ($firebase(new Firebase(FIREBASE_URL+"abc/def/")).$asArray());
collegeuserArray.$loaded(function(collegeuserArray) {
for(var i=0; i<collegeuserArray.length; i++)
{
if((collegeuserArray[i].$value) == counsellorEmail)
{
simpleuser = collegeuserArray.$keyAt(collegeuserArray[i]);
console.log(simpleuser);
return simpleuser;
}
}
}, function(error) {
console.error("Error:", error);
});
}
};
);//service ends here.
Quando il codice viene eseguito dà errori per .then funzione come Fallows :
TipoErrore: non definito non è una funzione e il valore nel controller non è accessibile.
Per favore aiuto.
è necessario implementare '' $ q'' nella vostra fabbrica, controllare questo: https://docs.angularjs.org/api/ng/service/$q –
Hey Deblaton Jean-Philippe, sto avendo problemi nell'implementazione di $ q nella mia fabbrica. Potresti guidarmi attraverso il processo ... !! ? –
cos'è $ firebase e perché lo restituisci prima? A volte inserisci il tuo ciclo "for"? –