我已经创建了一个工厂,它向我的同学和我创建的api发出了一个http get请求。出于某种原因,我的控制器接受来自表单的提交请求的参数返回:
angular.js:9101 TypeError: Cannot read property 'crawlWeb' of undefined
目的是使用另一个控制器来操纵其他地方的数据。我试过看几个地方,发现了类似的例子,但似乎仍然有同样的错误。 AngularJS: Cannot call function in factory https://github.com/amitavroy/learningci/blob/06_angularjs_factory_02/js/singlepage/singlepage_module.js
我的工厂设置似乎有些问题,不允许我的控制器访问其成员。
厂:
myApp.factory('SharedData', ['$http', '$rootScope', function($http, $rootScope) {
var requestReturn = {};
requestReturn.result = function(p) {
return $http({
headers: {'Content-Type': 'application/x-www.form-urlencoded'},
url: 'http://www.capstone-crawler.appspot.com/crawler',
method: 'GET',
params: p,
})
.then(function(response) {
requestReturn = response;
$rootScope.$broadcast('theReturn', response);
})
}
}]);
控制器:
myApp.controller('FetchController', ['$scope', function($scope, SharedData) {
$scope.setParams = function(tosend) {
var toSubmit = {
pages: $scope.tosend.pagesToCrawl,
depth: $scope.tosend.crawlDepth,
start: $scope.tosend.webCrawlURL,
keyword: $scope.tosend.keyWord
}
console.log(toSubmit);
SharedData.crawlWeb(toSubmit);
}
}]);
答案 0 :(得分:0)
您未从Factory
服务返回。您需要返回requestReturn
个对象才能使用SharedData
服务。
crawlWeb
工厂也没有SharedData
功能。
myApp.factory('SharedData', ['$http', '$rootScope', function($http, $rootScope) {
var requestReturn = {};
requestReturn.result = function(p) {
// Rest of code
},
requestReturn.crawlWeb=function(){
alert("service Called");
}
return requestReturn;
}]);
请参阅此DEMO。
这里我点击按钮
调用SharedData.crawlWeb