2

Restangular API 呼び出しを行った後、ng-show を更新するのに問題があります。API からの応答を取得した後で $appply を使用しようとしましたが、「$digest は既に進行中です」というエラーが表示されます。

Restangular.one("registrants/" + $scope.registrant.id).customPUT($scope.registrant, "").then(function (response) {
        $scope.$apply(function () {
            $scope.registrant = response.registrant;
        });
});

そしてビューで

<span ng-show="registrant.checked_in">User is checked in</span>

<span ng-hide="registrant.checked_in">User is not checked in</span>

どんな助けでも大歓迎です!

4

2 に答える 2

0

この問題は、次の方法でいつでも回避できます。

<span>User is {{registrant.checked_in ? '' : 'not '}}checked in</span>

または:

<span>User is <span ng-hide="registrant.checked_in">not</span> checked in</span>
于 2013-11-27T15:58:24.710 に答える
0

あなたの問題を解決するかもしれないいくつかの簡単な変更を加えました:

Restangular
  .one('registrants', $scope.registrant.id) // prepares base route /registrants/registrantId
  .customPUT($scope.registrant, '') // makes PUT on /registrants/registrantId with payload object $scope.registrant
  .then(function (response) {
    $scope.registrant = response.registrant;
  });

実際のリクエストが行われたことを確認してください (chrome dev tools / firebug のネットワーク パネル)。また、本当に PATCH ではなく PUT を作成する必要があるかどうかを確認してください。

Restangular
  .one('registrants', $scope.registrant.id) // prepares base route /registrants/registrantId
  .patch($scope.registrant) // makes PATCH on /registrants/registrantId with payload object $scope.registrant
  .then(function (response) {
    $scope.registrant = response.registrant;
  });

$apply は、XHR 応答が完全に返されるたびに $rootScope.apply() 内でコールバックが実行されるため、実際には必要ありません。

于 2013-11-27T15:16:58.553 に答える