AngularJs получает старое значение от ввода

symfony user спросил: 28 апреля 2018 в 09:46 в: php

Я новичок в angularJs, и я попытался получить старое значение, чтобы редактировать данные в базе данных.

$scope.editName=function(OldName, newName){
    $http.post("/api/data/edit/"+OldName+"/"+newName, {
    }).then(function(response){
        $scope.getData();
    },function(error){
    });
};

и в моем html

<tr ng-repeat="d in data">
  <td ng-show="!show">{{data.name}}</td>
  <td ng-show="show">
      <input type="text" class="form-text" size="20" ng-model="data.name">
  </td>
  <td>
      <a ng-click="show = ! show" ng-show="!show" title="<?php print t("Edit"); ?>"><?php print t("Edit"); ?></a>
      <a ng-click="show = ! show;editName(???, data.name)" ng-show="show" title="<?php print t("Save"); ?>"><?php print t("Save"); ?></a>
  </td>
</tr>

Я не знаю, как получить старое значение и как я могу выполнить обновление в моей базе данных. Я просто получаю новое значение

1 ответ

Есть решение
Protozoid ответил: 28 апреля 2018 в 10:14

Задайте начальное значение как новое свойство объекта данных при загрузке страницы

app.controller('AppCtrl', function($scope, data) {
    angular.forEach(data, function (dataEntry) {
        dataEntry.oldName = dataEntry.name;
    });
});

Затем в HTML-вызове editName(data.oldName, data.name) как таковой

<a ng-click="show = ! show;editName(data.oldName, data.name)" ng-show="show" title="<?php print t("Save"); ?>"><?php print t("Save"); ?></a>