ngGridDirectives.directive('ngInput',['$parse', function($parse) {
return function ($scope, elm, attrs) {
var getter = $parse($scope.$eval(attrs.ngInput));
var setter = getter.assign;
var oldCellValue = getter($scope.row.entity);
elm.val(oldCellValue);
elm.bind('keyup', function() {
var newVal = elm.val();
if (!$scope.$root.$$phase) {
$scope.$apply(function(){setter($scope.row.entity,newVal); });
}
});
elm.bind('keydown', function(evt){
switch(evt.keyCode){
case 37:
case 38:
case 39:
case 40:
evt.stopPropagation();
break;
case 27:
if (!$scope.$root.$$phase) {
$scope.$apply(function(){
setter($scope.row.entity,oldCellValue);
elm.val(oldCellValue);
elm.blur();
});
}
default:
break;
}
return true;
});
};
}]);