带有$http.get的AngularJS服务没有't将数据传递给控制器
AngularJS service with $http.get doesn't pass data to a controller
我是AngularJS的新手,仍然坚持基础知识。
我正在创建一个带有$http.get的服务来加载几个Json文件。当我将服务加载到控制器中时,我会得到空数组。
这是我的服务
app.service('productService', ['$http', function($http){
var lista = this;
lista.products = [];
lista.menu = [];
$http.get('/prodotti_1.json').success(function(data){
lista.products = data;
});
$http.get('/menu_1.json').success(function(data){
lista.menu = data;
});
}]);
这是我的控制器:
app.controller('ProductController', ['productService', function(productService){
console.log(productService.products);
console.log(productService.menu);
}]);
控制台只打印一个空数组[]。如果我把console.log(数据(放在成功承诺中,console.log会很好地打印数组。我认为从代码学校开始,这可能会更容易,但我想我错过了将成功承诺中的数据传递给控制器的一点。在许多其他情况下,我看到了$scope变量的用法,但我了解到,如果我使用"this",我也可以避免使用。这就是我的代码不显示任何$scope。
我使用Angular 1.4.1仅供参考,我看到了许多论坛和其他问题,但情况似乎有所不同。
感谢
您正在解析promise之前访问变量。您可以做的是返回一个对象,该对象将您的各种承诺作为属性。
app.service('productService', ['$http', function($http){
return {
request1: $http.get('/prodotti_1.json'),
request2: $http.get('/menu_1.json')
}
}]);
所以你可以在你的控制器中处理它。
app.controller('ProductController', ['productService', function(productService){
productService.request1.success(function(data){
//access the data
});
productService.request2.success(function(data){
//access the data
});
}]);
希望能有所帮助。
相关文章:
- 在控制器和数据对象之间同步数据
- 将不在模型中的数据返回到mvc控制器
- 通过连线将数据从js发送到控制器
- ng绑定和ng href问题.ng href未从控制器加载数据
- 尝试从控制器加载带有json数据的Simile时间线
- 如何将角度输入指令数据传递给控制器
- 使用服务(AngularJS)在控制器之间共享数据
- 模型数据未通过窗体传播到控制器ASP.NET MVC4
- 从控制器返回到Ajax的数据混乱
- 通过共享服务在两个不同ng应用程序中的控制器之间共享数据
- 使用2个控制器管理工厂JSON$http数据
- 使用Angularjs在两个不同页面的控制器之间共享数据
- 将工厂服务数据发送到控制器,以便在视图中使用
- 2ng控制器,并且需要在控制器之间共享数据
- 如何正确地将数据从自定义服务传递到角度控制器
- 在控制器angular js之间共享数据
- 将数据从Javascript传递到Laravel控制器
- JQuery$.ajax()发布数据以调用我的控制器中的方法
- 如何将json文件中的数据提取到对象数组中,并在两个控制器之间共享
- 如何使用ajax调用获取数组列表数据(将数组列表数据控制器传递给ajax方法)