2016-07-17 5 views
1

ui.grid을 사용 중이며 celledit 기능으로 고정되어 있습니다. 행은 DB에 저장되지만 아래와 같이 오류가 표시됩니다.ui.grid saveRow 이벤트가 발생하거나 아무도 이벤트를 수신하지 않거나 이벤트 핸들러가 약속을 반환하지 않을 때 약속이 반환되지 않았습니다.

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); 
}; 

ExpService :

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 설명서를 읽은 후에도 왜 해당 기능에 promise이 필요한지 이해할 수 없습니다.

답변

1

행 저장과 관련된 유효한 약속을 설정해야합니다. setSavePromise에 대한 documentation에서 :

저장 행과 관련된 약속의 saveRow 이벤트 핸들러가 돌아 오기 전에 곳이 메소드를 호출 필수를 설정합니다.

컨트롤러 :

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