我尝试执行重新加载数据按钮。这是我的 json:
[
{
"name": "AAAAAA",
"data": "False"
},
{
"name": "BBBBBB",
"data": "45%"
},
{
"name": "CCCCC",
"data": "12%"
}
]
我的 JavaScript:
app.service('service', function($http, $q) {
var deferred = $q.defer();
$http.get('names.json').then(function(data) {
deferred.resolve(data);
});
this.getNames = function() {
return deferred.promise;
}
});
app.controller('FirstCtrl', function($scope, service, $http) {
var vm = this;
vm.reloadData = function() {
console.log("reloading");
vm.loadData();
};
vm.loadData = function() {
var promise = service.getNames();
promise.then(function(data) {
$scope.names = data.data;
console.log($scope.names);
});
}
vm.loadData();
});
我的 HTML :
<div ng-controller="FirstCtrl as vm">
<table>
<tbody>
<tr ng-repeat="name in names">
<td>{{name.name}}</td>
<td>{{name.data}}</td>
</tr>
</tbody>
</table>
<button ng-click="vm.reloadData()">Reload</button>
</div>
我的数据应该在单击函数“vm.reloadData()”后重新加载,但没有任何反应,我的数据不刷新。 感谢您提前的答复。
最佳答案
试试这个:
- 我已将您的额外 promise 删除为 $http 本身返回 promise ..
添加了不将请求数据保留在缓存中的规定
app.service('service', function($http, $q) { this.getNames = function() { return $http.get('names.json', { cache: false}); } }); app.controller('FirstCtrl', function($scope, service) { var vm = this; vm.reloadData = function() { console.log("reloading"); vm.loadData(); }; vm.loadData = function() { var promise = service.getNames(); promise.then(function(data) { $scope.names = data.data; console.log($scope.names); }); } vm.loadData(); });
关于javascript - 在 Angular 中重新加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41670987/