0

我正在使用 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) {});},

但问题是我需要在很多地方都有这个处理程序,这种方法会导致很多代码重复。有更好的想法吗?

4

2 回答 2

1

从您的功能中删除$http,您在功能上添加的参数addCommentHandler正在消失存在$http服务。

代码

function addCommentHandler(params){ //<-- removed $http paramter function.
    var url = "./postComment";
    $http({method: 'GET',url: url
  })
  .then(function successCallback(response) {}, 
     function errorCallback(response) {});
}
于 2015-11-09T07:45:47.443 回答
1

从方法声明中删除 $http,您正在尝试将角度服务注入私有方法!

于 2015-11-09T07:47:53.743 回答