Angularjs-向工厂传递数据的方法不起作用
Angularjs - Passing data to factory method not working
我刚开始对angular进行编码,我不确定我到底做错了什么。
我有一个工厂的方法,使用$http get:
angular.module('d3_survey')
.factory('currentSurvey', ['$http', function($http) {
return{
sweep : function(number) {
console.log('resources/currentSurvey/' + number + '.json');
return $http.get('resources/currentSurvey/' + number + '.json').then(function (response) {
return response;
});
}
}
}]);
我想我可以这样做,因为sweep是一个闭包和所有东西,它仍然可以访问$http。我在ui路由器配置中解析该服务。
resolve : {
surveyDetails : ['surveyQuestions', function(surveyQuestions){
return surveyQuestions.all();
}],
messages : ['currentSurvey', function(currentSurvey) {
return currentSurvey;
}]
}
我将"消息"注入我的控制器,并尝试调用扫描方法:
var messages = $scope.currentSurvey.sweep('1');
$scope.result = JSON.stringify(messages);
但当我将$scope.result绑定到我的视图时,页面上会出现一些奇怪的东西:
{"$$state":{"status":0}}
我看到了其他一些问题,有些人对工厂方法的结果做了进一步的.then(),但即使这样也没有成功。
这是我在控制台上看到的,但毫无意义:
SyntaxError: Unexpected token m
at Object.parse (native)
at pc (http://localhost:63342/SurveyTool/js/angular.min.js:14:208)
at Zb (http://localhost:63342/SurveyTool/js/angular.min.js:76:379)
at http://localhost:63342/SurveyTool/js/angular.min.js:77:237
at s (http://localhost:63342/SurveyTool/js/angular.min.js:7:302)
at Zc (http://localhost:63342/SurveyTool/js/angular.min.js:77:219)
at c (http://localhost:63342/SurveyTool/js/angular.min.js:78:349)
at http://localhost:63342/SurveyTool/js/angular.min.js:112:20
at l.$eval (http://localhost:63342/SurveyTool/js/angular.min.js:125:305)
at l.$digest (http://localhost:63342/SurveyTool/js/angular.min.js:122:398) angular.js:11939
不能像AJAX请求那样只从异步操作返回。在您的情况下,currentSurvey.sweep
返回一个Promise对象,所以您应该使用它的API将回调与then
方法链接起来。一旦数据可用,就会调用此回调:
messages.sweep('1').then(function(response) {
$scope.result = JSON.stringify(response.data);
});
另一件事是,您实际上不需要在路由器配置的解析部分提供messages
密钥。您可以将currentSurvey
服务直接注入控制器。
相关文章:
- Meteor-添加用户自定义字段的方法不起作用
- 在 JQUERY 中创建 HTML 后,Jquery 方法不起作用
- 为什么这个扩展方法不起作用
- Splice()方法不起作用
- Angularjs-向工厂传递数据的方法不起作用
- Knockout和bread.js的take方法不起作用Paging
- javascript注入$http-post方法不起作用
- 为什么pulk()和where()方法不起作用
- Ajax get 方法不起作用
- 当我将javascript代码放在外部站点.js文件中时,Ajax页面方法不起作用
- getJSON 方法不起作用
- Jquery ajax get 方法不起作用
- jQuery AddClass 方法不起作用
- ScriptManager.RegisterStartupScript() 方法不起作用 - ASP.NET,C#
- 为什么JavaScript方法不起作用
- 为什么 findRandom() mongoose for node.js 方法不起作用
- BackboneJS的设置方法不起作用
- 从javascript调用 asp.net 页面方法不起作用
- 主干.js对以前的方法不起作用进行建模
- toExponential() 方法不起作用