私は現在、最初のAngularアプリを構築しようとしていますが、少し助けが必要になる可能性があります。
標準の$resourceアクションを使用してRESTサービスにアクセスしています。
angular.module('wtrack', ['ngResource']).
factory('WtrackAPI', function($resource) {
var WtrackAPI = $resource('http://hostname/wtrack/api/w/:id');
return WtrackAPI;
});
そしてこれは私のコントローラーです:
function ListCtrl($scope, $timeout, WtrackAPI){
$scope.wdata = WtrackAPI.query(); // a list of objects displayed in my view
$scope.addEntry = function() { // adding an object to the list
console.log("Adding Entry");
var entry = {day: $scope.wdata.day, value: $scope.wdata.value};
WtrackAPI.save(entry,
function(){console.log("WTF do I need to do here to rerun WtrackAPI.query()");});
};
}
私がやりたいのは、基本的に$scope.wdata = WtrackAPI.query();
、save()が完了したら、もう一度実行してモデルを更新することです。角度のある方法はただ$scope.wdata.push(entry)
のことだと思いますが、この場合、データベースはトリガーを使用してエントリにデータを追加し、複雑な並べ替えを行うため、クエリを使用してリスト全体をラウンドトリップしてリロードしたいと思います。どうすればこれを実現できますか?$scope.wdata = WtrackAPI.query();
$ scopeがそこに存在しないようであるため、saveコールバックを呼び出すだけでは機能しません。$emitや$rootScopeなどを使って他のいくつかのことを試しましたが、それだけで本当に混乱しました。だから、誰かが私にそれを行うための適切な方法についてのヒントを教えてもらえますか?