我是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 [];
});
}
});
}]);
})();
答案 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>