2016-09-30 9 views
0

ListViewから項目を削除しても、その変更はListViewに反映されず、NativeScriptでは更新されません。私はFirebaseをバックエンドとして使用していますが、データはデータベース内で正しく更新されています。削除後にListViewが更新されない

誰でも助けてください。私は以下のコードファイルを提供しています。スプライシング後、正しい結果が得られましたが、リストビューはそのデータとバインドされません。

list.model.ts

function delete(id) { 
return firebase.remove("/Groceries/" + id + ""); 
}; 

list.ts

var items = []; 
var itemsObject = new observableModule.fromObject({ 
groceryList: items 
}); 

export function deleteValues(args) { 
var item = args.view.bindingContext; 
var page = <pages.Page>args.object; 

deleteItems(item.key) 
    .then(
    () => { 
     items.splice(items.indexOf(item), 1); 
     page.bindingContext = itemsObject; 
    } 
    ).catch(
    () => { 
     alert("error"); 
    } 
    ) 
    }; 

あなたはまだのようにListViewコントロールのためのitemListのを定義することができ

<Page loaded="loaded"> 
<GridLayout rows="auto, *" columns="2*, *"> 
<TextField id="grocery" text="{{ grocery }}" hint="Enter a grocery 
item" row="0" col="0" /> 
    <Button text="Add" tap="addGrocery" row="0" col="1" /> 
    <ListView id="groceryList" items="{{ groceryList }}" row="1" 
     colSpan="2"> 
     <ListView.itemTemplate> 
     <GridLayout columns="*, auto"> 
      <Label text="{{ name }}" horizontalAlignment="left" 
      verticalAlignment="center"/> 
      <Image src="~/images/delete.png" col="1" 
      tap="deleteValues" /> 
      </GridLayout> 
     </ListView.itemTemplate> 
    </ListView> 
</GridLayout> 

+1

ListViewを強制的に更新するには、 'refresh'メソッドを使用できます。 - https://docs.nativescript.org/api-reference/classes/_ui_list_view_.listview.html#refresh –

答えて

1

たList.xml ObservableArrayと使用する電子ビルトインsplicefunction対象アイテム削除するには:あなたのコード内ので

:基本的に

var items = new Observable.ObservableArray<any>(); 
items.splice(index, 1); 

を、それはあなたがやっていることと同じだが、それはあなたの代わりに更新をObservableArray使用している必要がある場合通常の配列

+0

これは動作します。最初の項目のみが削除されます。 2番目のアイテムリストの削除は更新されません。 – Khushi

関連する問題