我试图获取一些数据,然后将其传递给控制器进行进一步处理。我已经设置了一个工厂来获取数据但是有问题将它传递给控制器并使其正常工作。以下是我正在使用的案例。
var app = angular.module("contactApp",[]);
app.factory('listData',function($http){
return{
getData: function(onSuccess,onFailure,itemID){
$http.get("/_api/web/lists/getbytitle('Consultant%20Profile')/items?$filter=ID%20eq%20"+itemID).success(onSuccess).error(onFailure);
}
};
});
app.controller('ContactController', function(listData,$scope){
//setTimeout(function(){console.log(Data)},2000);
console.log("Controller called. Hello");
listData.getData(successFunction,failFunction,curItemId);
successFunction = function(data){
$scope.resData = data;
console.log("Success - ", data);
}
failFunction - function(data){
console.log("Didn't work - ", data);
}
});
这给我以下错误。
未定义successFunction
不确定我做错了什么,非常感谢任何输入!
修改
向下移动功能的效果非常好,但异步调用失败了。我切换到使用$ ajax并且它工作正常,但$ http因某些原因无效!
app.factory('listData',function($http){
return{
getData: function(onSuccess,onFailure,itemID){
//$http.get("/_api/web/lists/getbytitle('Consultant%20Profile')/items?$filter=ID%20eq%20156").success(onSuccess).error(onFailure);
$.ajax({
url:"/_api/web/lists/getbytitle('Consultant%20Profile')/items?$filter=ID%20eq%20"+itemID,
headers: {"accept": "application/json; odata=verbose"},
success: onSuccess,
error: onFailure
});
}
};
});
这些数据来自SharePoint列表,但这无关紧要。我会继续挖掘,如果我发现任何我找不到的语法错误,请告诉我。
我非常感谢帮助人员!
编辑2:
好的,这个问题是无关紧要的。我发现了问题,SharePoint使用odata所以我必须传递标题:
app.factory('listData',function($http){
return{
getData: function(onSuccess,onFailure,itemID){
$http(
{
method: "GET",
headers: {"accept": "application/json; odata=verbose"},
url: "/_api/web/lists/getbytitle('Consultant%20Profile')/items?$filter=ID%20eq%20"+itemID
}
).success(onSuccess).error(onFailure);
}
};
});
你们摇滚!!!!!!!
答案 0 :(得分:0)
正如Daniel A. White所说,在你打电话之前宣布你的功能。
var app = angular.module("contactApp",[]);
app.factory('listData',function($http){
return{
getData: function(onSuccess,onFailure,itemID){
$http.get("/_api/web/lists/getbytitle('Consultant%20Profile')/items?$filter=ID%20eq%20"+itemID).success(onSuccess).error(onFailure);
}
};
});
app.controller('ContactController', function(listData,$scope){
//setTimeout(function(){console.log(Data)},2000);
console.log("Controller called. Hello");
var successFunction = function(data){
$scope.resData = data;
console.log("Success - ", data);
}
var failFunction - function(data){
console.log("Didn't work - ", data);
}
//Now your functions are actually defined.
listData.getData(successFunction,failFunction,curItemId);
});
您不必使用var
来声明函数,因为JavaScript仍然可以理解,但使用var
使其成为local
变量,而不使用var
将其定义为global
。
我相信这会有所帮助。