在Angular中动态填充表

时间:2016-07-08 09:40:37

标签: javascript angularjs

我是Angular的新手。我创建了一个应用程序,只要单击一个按钮,就应该触发一个调用,该调用获取一组json对象并填充特定的表。在下面的控制器代码中,我设法直接填充表而没有单击按钮(通过this.tableParams),但我想要的是触发此数据获取过程并仅在populateTable()函数填充表时叫。我怎么做的?

(function() {
'use strict';

angular
    .module('anomalies')
    .controller('controller', ['$log', '$scope', '$http', 'NgTableParams', function ($log, $scope, $http, NgTableParams) {

        $scope.populateTable = function () {

            //

        }


        this.tableParams = new NgTableParams({}, {
            filterDelay: 300,
            getData: function (params) {
                return $http({
                    method: 'GET',
                    url: '/server/data.json'
                }).then(function (response) {
                    return response.data;
                }, function (response) {
                    $log.log(response);
                    return [];
                });
            }
        });

    }]);

})();

2 个答案:

答案 0 :(得分:2)

为什么不在NgTableParams - 函数中创建populateTable - 对象?

angular
    .module('anomalies')
    .controller('controller', ['$log', '$scope', '$http', 'NgTableParams', function ($log, $scope, $http, NgTableParams) {

    $scope.populateTable = function () {
      this.tableParams = new NgTableParams({}, {
        filterDelay: 300,
        getData: function (params) {
            return $http({
                method: 'GET',
                url: '/server/data.json'
            }).then(function (response) {
                return response.data;
            }, function (response) {
                $log.log(response);
                return [];
            });
        }
      });
    }.bind(this);




}]);

不是.bind(this)。这可以确保this关键字在populateTable - 函数内的含义与控制器中的相同。

答案 1 :(得分:1)

this.tableParams移至$scope.populateTable功能。将此功能绑定到视图中的按钮,例如<button ng-click="populateTable()">Click Me!</button>