0

ページを更新すると、正しい値が表示されます。フォームが送信されたときに「要点」のリストが自動的に更新されるようにします。

グローバル @todone がそのように設定されているのは、「todone」として設定すると未定義のエラーが発生するためです。無関係かもしれません。

app.factory "To_done", ["$resource", ($resource) ->
   $resource("/to_dones", {}, {update: {method: "PUT"}})
]

@MainCtrl = ["$scope", "To_done", ($scope, To_done) ->
  $scope.to_dones = To_done.query()

  $scope.addTodone = ->
    @todone = To_done.save($scope.newTodone)
    $scope.to_dones.push(@todone)
    $scope.newTodone = {}
]


<div ng-controller="MainCtrl">
  <form ng-submit="addTodone()">
    <input type="text" ng-model="newTodone.gist">
    <input type="submit" value="Add">
  </form>
  <ul>
    <li ng-repeat="todone in to_dones">
        {{todone.gist}}
    </li>
  </ul>
</div>
4

1 に答える 1

1

To_done.save($scope.newTodone) は非同期です。POST によって返される値を取得するには、コールバック関数を登録する必要があります。

var todone = To_done.save($scope.newTodone, function() {
   //success callback - optional
   $scope.to_dones.push(todone);
}, function() {
   //error callback - optional
});
$scope.newTodone = {};

サービスから受け取った回答に関する詳細情報が必要な場合は、コールバック メソッドに引数を追加できます。詳細はこちら: http://docs.angularjs.org/api/ngResource .$resource

于 2013-03-20T00:21:13.813 に答える