我在lim中使用REST API学习Angular JS im,该api返回JSON数据对象。我有一个搜索控制器,其中有一个Submitform方法,它可以获取数据。但是现在我有了另一个也需要此数据的控制器。现在,我已经阅读了有关此内容,发现可以使用工厂服务来代替,但是由于某种原因,我会收到此错误消息:
TypeError: undefined is not a function
at http://localhost/c2dmobile/js/main.js:72:23
at https://code.angularjs.org/angular-1.0.0.min.js:8624:11
at wrappedCallback (https://code.angularjs.org/angular-1.0.0.min.js:6585:59)
at https://code.angularjs.org/angular-1.0.0.min.js:6622:26
at Object.Scope.$eval (https://code.angularjs.org/angular-1.0.0.min.js:7769:28)
at Object.Scope.$digest (https://code.angularjs.org/angular-1.0.0.min.js:7641:25)
at Object.Scope.$apply (https://code.angularjs.org/angular-1.0.0.min.js:7855:24)
at done (https://code.angularjs.org/angular-1.0.0.min.js:8844:20)
at completeRequest (https://code.angularjs.org/angular-1.0.0.min.js:8984:7)
at XMLHttpRequest.xhr.onreadystatechange (https://code.angularjs.org/angular-1.0.0.min.js:8954:11) angular-1.0.0.min.js:5525
(anonymous function) angular-1.0.0.min.js:5525
(anonymous function) angular-1.0.0.min.js:4659
wrappedCallback angular-1.0.0.min.js:6587
(anonymous function) angular-1.0.0.min.js:6622
Scope.$eval angular-1.0.0.min.js:7769
Scope.$digest angular-1.0.0.min.js:7641
Scope.$apply angular-1.0.0.min.js:7855
done angular-1.0.0.min.js:8844
completeRequest angular-1.0.0.min.js:8984
xhr.onreadystatechange
这是代码:
//SHARE DATA BETWEEN CONTROLLERS
c2dApp.factory("ShareData", function() {
return {
//ZipCode: function() {return ZipCode;},
resList: function() {return ResList;}
};
});
//CONTROLLERS: SEARCHLIST
c2dApp.controller('SearchResultController', function($scope, ShareData) {
//NEEDS THE RESTULT FROM SEARCH
});
//CONTROLLERS: SEARCH
c2dApp.controller("SeachController", function($scope, $http, ShareData) {
$scope.message = 'dit is search';
$scope.myData = {};
$scope.myData.haveZip = false;
$scope.searchForm = {};
$scope.searchForm.zipCode = "";
$scope.searchForm.getFormFieldCssClass = function(ngModelController) {
//console.log("getting css class: " + ngModelController.$valid) ;
if(ngModelController.$pristine) return "";
return ngModelController.$valid ? "fieldValid" : "fieldInvalid";
};
$scope.submitForm = function() {
//console.log("--> Submitting form");
$http({
url: "http://localhost/c2dapi/search",
data: $scope.searchForm,
method: 'POST',
headers : {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}
}).success(function(data){
//console.log("OK", data);
if (angular.equals(data[0], 'no_location_found')) {
console.log('geen lokatie gevonden');
}
if (angular.equals(data[0], 'restaurants_found')) {
console.log('restaurant lijst');
console.log(data);
ShareData.ResList() = data; // <------ REturns ERROR
}
}).error(function(err){"ERR", console.log(err)});
};
});
//更新cshion遮篷部分工作
ShareData.ResList()=数据;
returns the error ReferenceError: Invalid left-hand side in assignment
所以我把它改成了 ShareData.ResList = data;
现在当我打电话时找到了json对象 ShareData.ResList
但这只是在发布之后,我想这样
如果(ShareData.ResList){}
问题是,ShareData.ResList永远不会“未定义”,而是返回:
function () {
return ResList;
}
什么时候不设置?我希望它返回false。
您可以在Service或Factory的控制器,指令等之间共享数据。使用工厂:
c2dApp.factory("ShareData", function() {
var ResList;
return {
resList: function() {return ResList;}
};
});
在您的控制器中:
ShareData.resList() = data
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句