Я пытаюсь выполнить встроенное редактирование в angularJS, а затем обновить данные, введенные в таблицу Mysql, но я новичок в угловых и не знаю, как обрабатывать введенные данные (из директивы) и передать его в контроллер, чтобы сохранить его в БД, поэтому в коды ниже: переменные tid
все еще пусто после редактирования .. как я могу сохранить новый идентификатор после встроенного редактирования, чтобы отправить их в базу данных?
HTML:
<tbody>
<tr ng-repeat="item in ItemsByPage[currentPage]">
<td>
<div contentEditable="true" ng-model="tid" val='tid'>
{{item.id}}
</div>
<button ng-click="inlineupdate()" type="button">
Save
</button>
</td>
</tr>
</tbody>
в контроллере:
$scope.inlineupdate = function () {
var data = {
tid : $scope.val,
};
var request = $http({
method: "post",
url: "inlineupdate.php",
params: {
action: "post"},
data: data
});
return( request.then( handleSuccess, handleError ) );
};
и директива:
myApp.directive('contenteditable', function() {
return {
restrict: 'E',
scope: {
val : '='
},
link: function(scope, elm, ctrl) {
// view -> model
elm.bind('blur', function() {
scope.$apply(function() {
ctrl.$setViewValue(elm.html());
});
});
// model -> view
ctrl.render = function(value) {
elm.html(value);
};
// load init value from DOM
ctrl.$setViewValue(elm.html());
elm.bind('keydown', function(event) {
console.log("keydown " + event.which);
var esc = event.which == 27,
el = event.target;
if (esc) {
console.log("esc");
ctrl.$setViewValue(elm.html());
el.blur();
event.preventDefault();
}
});
}
};
и файл inlineupdate.php для обновления данных в mysql:
<?php
header('Content-Type: application/json');
include 'connect.php';
$db = new database();
$db->setDb_name('training');
$db->connect();
if(isset($_POST)){
$id = $_POST['val'];
$name = 'name';
$data = $db->inlineupdate('user',array('id'=>$id),array('name'=>$name));
echo json_encode($data);
}
mysql_close();
?>
консоль выдает уведомление, что «неопределенный индекс: tid в файле inlineupdate.php»
Задача ещё не решена.
Других решений пока нет …