Angularjs ui.grid在引发saveRow事件时未返回承诺,或者没有人在侦听事件,或者事件处理程序未返回承诺

Angularjs ui.grid在引发saveRow事件时未返回承诺,或者没有人在侦听事件,或者事件处理程序未返回承诺,angularjs,angular-ui,angular-ui-grid,Angularjs,Angular Ui,Angular Ui Grid,我使用的是ui.grid,一直使用celledit功能。该行保存在DB中,但显示一个错误,如下所示 angular.min.js:2 A promise was not returned when saveRow event was raised, either nobody is listening to event, or event handler did not return a promise 控制器: $scope.saveRow = function( rowEntity ) {

我使用的是
ui.grid
,一直使用
celledit
功能。该行保存在DB中,但显示一个错误,如下所示

angular.min.js:2 A promise was not returned when saveRow event was raised, either nobody is listening to event, or event handler did not return a promise
控制器:

$scope.saveRow = function( rowEntity ) {
    // create a fake promise - normally you'd use the promise returned by $http or $resource
    //var promise = $q.defer();
    ExpService.insertExp(rowEntity);
    /*console.log(rowEntity);
    $scope.gridApi.rowEdit.setSavePromise( rowEntity, promise.promise );
    promise.resolve();*/
};

$scope.gridOptions.onRegisterApi = function(gridApi) {
    // set gridApi on scope
    $scope.gridApi = gridApi;
    gridApi.rowEdit.on.saveRow($scope, $scope.saveRow);
};
$scope.saveRow = function( rowEntity ) {
    var promise = ExpService.insertExp( rowEntity );
    $scope.gridApi.rowEdit.setSavePromise( rowEntity, promise );
};
出口服务:

var exp={};
exp.insertExp = function(insData){
    return $http.post(config.expInsertURL, insData).then(function(repos){
        return repos.data;
    },function(error){
        alert("Error happened while getting response \n" + error);
        return "";
    });
}
return exp;

有人能帮我解决这个问题吗?特别是,我不明白为什么我们在该函数中需要一个
承诺
,即使在阅读了
ui.grid
文档之后也是如此。

您需要设置一个与行保存相关联的有效承诺。从以下内容:

设置与行save相关联的承诺,强制 saveRow事件处理程序在返回之前在某处调用此方法

控制器:

$scope.saveRow = function( rowEntity ) {
    // create a fake promise - normally you'd use the promise returned by $http or $resource
    //var promise = $q.defer();
    ExpService.insertExp(rowEntity);
    /*console.log(rowEntity);
    $scope.gridApi.rowEdit.setSavePromise( rowEntity, promise.promise );
    promise.resolve();*/
};

$scope.gridOptions.onRegisterApi = function(gridApi) {
    // set gridApi on scope
    $scope.gridApi = gridApi;
    gridApi.rowEdit.on.saveRow($scope, $scope.saveRow);
};
$scope.saveRow = function( rowEntity ) {
    var promise = ExpService.insertExp( rowEntity );
    $scope.gridApi.rowEdit.setSavePromise( rowEntity, promise );
};