【发布时间】:2015-04-18 04:01:30
【问题描述】:
我是 angularjs 的新手。我无法访问 从其控制器中的 angularjs 服务返回的值。 以下是控制器中的代码:
'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
搜索服务中的代码如下:
'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.
当代码执行时,它会为 .then 函数提供错误:
TypeError: undefined is not a function 并且控制器中的值未被访问。
请帮忙。
【问题讨论】:
-
你必须在你的工厂里实现
$q,检查这个:docs.angularjs.org/api/ng/service/$q -
Hey Deblaton Jean-Philippe,我在工厂中实施 $q 时遇到了麻烦。你能指导我完成整个过程吗...!! ?
-
什么是$firebase,为什么要先退货?你有时会进入你的“for”循环吗?
-
实际上,firebase 是我的 nosql 数据库,其中包含我需要的一组特定值。我从 firebase 获取值,但问题是我无法在控制器中返回值。控制器中的 [.then] 给出了我在问题中提到的错误。是的,我为从 firebase 获得的每个值输入循环。
-
执行这个:
var something = Search.getIdByEmail(collegeId)并告诉我something里面有什么。顺便说一句,我不明白为什么代码在return ($firebase(new Firebase(FIREBASE_URL+"abc/def/")).$asArray());之后继续
标签: angularjs node.js angularjs-scope firebase firebasesimplelogin