データベースにたくさんの「キャンペーン」があります。
{"name" : "Apple", "status" : "active"}
{"name" : "Orange", "status" : "paused"}
私はそれらをAngularで表示しました:
<span ng-switch on="campaign.status">
<a ng-switch-when="active" ng-click='setStatus($index, "paused")'>Pause</a>
<a ng-switch-when="paused" ng-click='setStatus($index,"active")'>Activate</a>
</span>
次に、コントローラーで、API(更新されたエントリのJSONを返す)を使用してサーバーのデータベースのステータスを更新します。
$scope.setStatus = function(index, newstatus) {
var item = $scope.campaigns[index];
var url = 'api.mysite.com/' + newstatus + '/' + item._id.$oid;
if (! $scope.isComplete(item) )
{
$http({method: 'GET', url: url}).
success(function(data, status, headers, config) {
$scope.campaigns[index] = data;
}). error(function(data, status, headers, config) {
console.log('Error communicating with the server.');
});
}
}
ここで、変数campaigns
は、コントローラーが次のように初期化されたときにサーバーから取得されたすべてのキャンペーンの配列です。
$scope.connection = $resource('api.mysite/getallcampaigns');
$scope.campaigns = $scope.connection.query();
これはすでに本当に厄介なようで、AngularJSを間違って使用していると確信しています:(主なことは、変更している要素のインデックスをコントローラーに渡していることです。これは、配列を並べ替えると壊れます。 .Angularにこれをうまく接続させるにはどうすればよいですか?これを行うための最小限の正しい方法は何ですか?