我正在使用 Angular Grid (ag-grid) 来显示数据。在我的表格中,每当用户通过内联编辑添加评论时,我打算进行休息调用并将评论保存在数据库中。我已经把$http
休息的东西放进去了newValueHandler
。在调试器中,我看到它newValueHandler
被调用但$http
未定义。然后我得到错误:Uncaught TypeError: $http is not a function
function CompletedActionsCtrl($scope, $http) {
var columnDefs = [{
headerName: "Comments",
field: "comments",
width: 180,
filter: 'text',
editable: true,
newValueHandler:addCommentHandler,
valueGetter: function (params) {
if (params.data.comments != null) {
return params.data.comments[0];
}
}
}]
function addCommentHandler(params,$http){
var url = "./postComment";
$http({method: 'GET',url: url
}).then(function successCallback(response) {}, function errorCallback(response) {});}
//==Controller invoker==
var app = angular.module('app', ['ngRoute', 'agGrid']);
app.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/completed_actions', {
templateUrl: 'completed_actions_partial.html',
controller: CompletedActionsCtrl
});
}]);
似乎是一项微不足道的任务,我确信我缺少一些基本的东西。
PS Javascript 和 angularjs 的新手。
== 代码流解释 == 当用户点击完成的操作选项卡时,CompletedActionsCtrl
由路由调用。在这个控制器内部,准备并渲染了一个网格。现在,当用户编辑评论并提交它时,newValueHandler
会调用它function addCommentHandler
==更新==通过定义一个匿名函数而不是调用私有函数作为处理程序来工作。
所以删除了这个->
newValueHandler:addCommentHandler,
并添加了这个->
newValueHandler:function(params){
var url = "./postComment";
$http({method: 'GET',url: url})
.then(function successCallback(response) {},
function errorCallback(response) {});},
但问题是我需要在很多地方都有这个处理程序,这种方法会导致很多代码重复。有更好的想法吗?