Angular Grid (ag-grid) を使用してデータを表示しています。私のテーブルでは、ユーザーがインライン編集でコメントを追加するたびに、残りの呼び出しを行い、DB にコメントを保存するつもりです。中に休憩コールを入れる$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) {});},
しかし、問題は、このハンドラーを多くの場所に配置する必要があることです。このアプローチでは、多くのコードの重複が発生します。より良いアイデアはありますか?