リモートオブジェクトを使用したレコードの削除
リモートオブジェクトモデルインスタンスで del() をコールすることでレコードを削除します。
del() は 2 つの引数 (両方とも省略可能) を受け入れ、指定された引数に応じて 1 つまたは複数のレコードを削除できます。
1RemoteObjectModel.del([record_ids], callback_function)
record_ids は、文字列の配列で、文字列は削除するレコードの Id です。このパラメータが省略されると、リモートオブジェクトインスタンスに設定された Id が使用されます。del() をそのままコールするのが、最も単純なレコード削除方法です。
1ctDetails = {FirstName: "Tobe", LastName: "Ornottobe"};
2ct = new RemoteObjectModel.Contact(ctDetails);
3ct.create();
4
5// After some though, and the async operation completes...
6// It's not to be; delete the contact
7ct.del();多くの場合、ボタンのクリックに応じたレコードの削除などが必要になります。レコードの削除は、ページからレコードの Id を取得して、Id を del() に渡すだけの簡単な処理です。次に例を示します。
1var id = $jQuery('#contactId').val();
2var ct = new RemoteObjectModel.Contact();
3ct.del(id);堅牢なコードには、エラーを処理するコールバックが含まれます。次のコードは、前のサンプルと同じ処理を実行しますが、イベントハンドラとコールバック関数を使用するように変更されています。
1// Handle the delete button click
2function deleteContact(e){
3 e.preventDefault();
4 var ct = new RemoteObjectModel.Contact();
5 ct.del($jQuery('#contactId').val(), updateCallback);
6}
7
8// Callback to handle DML Remote Objects calls
9function updateCallback(err, ids){
10 if (err) {
11 displayError(err);
12 } else {
13 // Reload the contacts with current list
14 getAllContacts();
15 $jQuery.mobile.changePage('#listpage', {changeHash: true});
16 }
17}リストのチェック項目など、1 つの要求で複数のレコードを削除するには、Id の配列を del() に渡します。
1var ct = new RemoteObjectModel.Contact();
2ct.del(['003xxxxxxxxxxxxxxx', '003xxxxxxxxxxxxxxx'], function(err, ids) {
3 if (err) {
4 displayError(err);
5 } else {
6 // Reload the contacts with current list
7 getAllContacts();
8 $jQuery('#status').html(ids.length + ' record(s) deleted.');
9 $jQuery.mobile.changePage('#listpage', {changeHash: true});
10 }
11});