如何刷新列表以从服务获取新数据
How to refresh the list to get new data from service?
我正在尝试调用web服务,从中接收数据并显示在列表中。我正在使用指令。
- 当我的小提琴加载时,我从
JSON
加载数据。它运行良好。我能够加载数据 - 然后单击"删除"按钮,我的列表为空。换句话说,我从列表中删除了所有项目。哪个运行良好
- 现在,当我单击刷新按钮时,我需要再次调用服务并从服务中获取新数据
但它并没有显示在列表中,为什么?这是我的代码:https://jsfiddle.net/8fjhLqnw/10/
.controller('he', function($http, $scope, sharedData) {
var h = this;
h.referesh=function(){
sharedData.get();
}
h.delete = function() {
sharedData.delete()
}
});
更新请参阅plunker
http://plnkr.co/edit/iMpStNneDmIsabTnFqpP?p=preview
我只需要点击刷新按钮,就可以加载data.json的数据,并在列表表单
更新的fiddle
问题是您正在刷新刷新调用中对sharedData.data的引用。f控制器在刷新数据之前将自己绑定到sharedData.data(即vm.data=sharedData_data),并且该vm.data引用从不更新(始终指向原始删除的数组)。要修复此问题,请构建对sharedData本身的引用,并从模板中访问内部的数据属性:
// continued off module definition
.directive('tm', function() {
// reference vm.sharedData.data in the template
return {
restrict: 'E',
template: '<div><ul><li ng-repeat="n in vm.sharedData.data">{{n.name}}</li></ul></div>',
scope: {},
controller: 'f',
controllerAs: 'vm'
};
}).controller('f', function($http, $scope, sharedData) {
var vm = this;
// initialize shared data
sharedData.get().then(function(){
vm.sharedData = sharedData;
});
刷新数据时,sharedData的数据属性将重置并由模板拾取,因为作用域引用sharedData引用(不会更改)。该模板将看到sharedData(刷新的数据属性)内部的任何更改。
相关文章:
- 在JS中获取当前IP(无第三方服务)
- 在JavaScriptAjax调用中从web服务中的XMLDocument获取响应.
- 使用AngularJS服务未获取数据
- 按服务获取JSON数据
- 使用 javascript 从本地主机服务获取数据
- 在设置用户后,从 JavaScript JSON 请求中获取 Web 服务 (asmx) ASP.NET Windows
- 从服务器获取数据,并使用$http服务和ng-change在select事件上显示它
- 我一直在获取angularjs服务不是函数错误(LoginService.login不是函数)
- 从服务中获取ng patten作为变量
- 使用AngularJS和ServiceStack Web服务获取('url')操作
- 获取AngularJS服务中TextArea的值
- 从控制器设置/获取服务中的数据
- 使用Web服务根据对另一个下拉框的选择填充第二个下拉框以获取信息
- 如何使用angularJS自定义服务从REST API获取数据
- 未知提供程序:在angular.bootstrap之前使用$injector获取$location服务时使用$rootE
- 无法在 AngularJS 中获取服务中的共享数据
- 在 $http.get 调用中获取服务上下文
- 在 Angular JS 中设置和获取服务中的数据值
- 使用角度 ui 路由器获取服务中的路由参数
- Angularjs通过$http刷新视图.插入数据库后获取服务