Javascript 以角度重新加载数据

Javascript 以角度重新加载数据,javascript,angularjs,refresh,Javascript,Angularjs,Refresh,我试着做重新加载数据按钮。这是我的json: [ { "name": "AAAAAA", "data": "False" }, { "name": "BBBBBB", "data": "45%" }, { "name": "CCCCC", "data": "12%

我试着做重新加载数据按钮。这是我的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后重新加载,但什么也没有发生,我的数据不会刷新。
感谢您提前回复。

根据您的实施情况,您正在履行服务承诺,该承诺已得到解决

您应该在getNames服务方法中定义deferred

app.service('service', function ($http, $q) {
    this.getNames = function () {
        var deferred = $q.defer();
        $http.get('names.json').then(function (data) {
            deferred.resolve(data);
        });
        return deferred.promise;
    }
});
将您的服务代码更改为

this.getNames = function() {
   return $http.get('names.json');
}
试试这个:

我已经取消了您的额外承诺,因为$http本身将返回一个承诺。。 添加了不将请求数据保留在缓存中的规定

   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();
    });