重新加载数据控制器json

时间:2017-01-14 11:52:59

标签: javascript angularjs json

你好,我的json:

[
    {
        "name": "AAAAAA",
        "data": "False",
    },
    {
        "name": "BBBBBB",
        "data": "45%",
    },
    {
        "name": "CCCCCC",
        "data": "12%",
    },
    {
        "name": "DDDDDD",
        "data": "False",
    }
]

我的javascript:

    var app = angular.module('app', ['ngRoute']);
        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, $route) {
        var vm = this;
        vm.reloadData = function(){
            $route.reload();
        }
            var promise = service.getNames();
            promise.then(function (data) {
                $scope.names = data.data;
                console.log($scope.names);
            }
        );

HTML:

    <tbody>
            <tr ng-repeat="name in names">
                <td>{{name.name}}</td>
                <td>{{name.date}}</td>
            </tr>
        </tbody>

<button ng-click="FirstCtrl.reloadData()">Reload</button>

我想在reloadData()函数中从json重新加载控制器中的数据,但它没有用。点击按钮重新加载后没有任何反应。 提前感谢您的回答!

3 个答案:

答案 0 :(得分:0)

确定$window.location.reload();代替$route.reload();,或者您可以应用刷新功能。

$route.reload()用于刷新路由,$window.location.reload();用于刷新页面。

干杯:)

答案 1 :(得分:0)

尝试$window.location.reload()但请记住,这会重新启动应用程序,因此可能无法执行任何功能,因此您必须在完成所需操作后对其进行战略性放置。

答案 2 :(得分:0)

您提供的代码存在一些问题。我修复了其中的一些并使你的代码工作。你可以在这里查看:

https://plnkr.co/edit/DpRUJg520yew91t93oVr

这是script.js:

var app = angular.module('app', []);

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