Angular js,在 select 元素上我想 POST 数据将其保存在数据库中然后我想用 PUT 更新它而不重新加载页面

Angular js, on select element i want to POST data to save it in the database then i want to update it with PUT without page reload

我有一个 table,其中有一个 select 字段,如果它不存在,我想通过 POST 数据将其保存到数据库中。如果它确实存在,那么我想更新数据库中已经存在的行。 这可以在 tbody 中找到,其中我的 table 行带有 ng-repeat 以显示来自 json.

的所有数据
<td>
  <select id="statusSelect{{anime.id}}" ng-model="statusId" ng-options="animeStatus.id as animeStatus.status for animeStatus in animeStatuses"
      ng-change='addUserAnime( "<?php echo Yii::app()->user->id; ?>", anime.id, statusId )'>
  </select>
</td>

接下来这是我在 angular 控制器中尝试执行的代码:

$scope.addUserAnime = function( userId, animeId, statusId, userAnime )
{
    if ( userId == '' ) {
        //alert user that he/she needs to log in first
    } else {
        //loop through my json where i saved from which user which anime is saved with which status
        for (var i = 0; i < $scope.usersAnime.length; i++) {
            //if there is an already existing entry then i want to update it if not then i want to introduce it into DB with POST
            if ($scope.usersAnime[i].anime_id == animeId && $scope.usersAnime[i].user_id == userId) {
                $scope.userAnime = $.extend({}, $scope.usersAnime[i]);
                $scope.userAnime.status_id = statusId;
                $scope.userAnime.date_modified = today;
                saveUserAnime();
                return;
            }
        }

        $scope.userAnime = {
            id: 0,
            user_id: userId,
            anime_id: animeId,
            status_id: statusId,
            rating: '',
            date_modified: today
        };
        saveUserAnime();
    }
};

问题是,如果我 POST 一个新条目,它会保存在数据库中,但如果我不重新加载页面,我再次更改 select 给它一个新选项,它会 POSTed 再次而不是对 update.In 使用 PUT 最后我得到两个条目而不是一个。我想首先 select 将它引入数据库,如果之后发生变化,我想更新它。那可能吗。我尝试使用 table 作为形式使用 $dirty 来完成它,但那是一个 nono。 在 saveUserAnime() 函数中,如果它的新条目正确定义为使用 POST,如果它是现有条目则使用 PUT。我有另一种适用的形式。问题一定出在当前函数中。

只需将该代码放在您使用 animeStatus 获取对象的位置,然后将其放入一个函数中,然后直接调用它。现在您可以在 POST 完成后调用该函数,以便加载新数据。

否则你也可以检查SQL,如果那个值存在于你的table,那么你不需要检查angularjs,那会比这更容易一.