私の NativeScript アプリには ListView があります。Observable オブジェクトの配列をそれにバインドして、各項目を個別に変更したいと考えています。ただし、NativeScript は、すべての ListView アイテムに対して同じ単一のアイテム (バインドされた配列の最後のアイテム) をバインドしているようです。
これは私のレイアウトです:
<Page loaded="onPageLoaded">
<StackLayout orientation="vertical">
<ListView items="{{items}}">
<ListView.itemTemplate>
<Label text="{{name}}" />
</ListView.itemTemplate>
</ListView>
</StackLayout>
</Page>
ビューモデルは次のようになります。
var observableModule = require("data/observable");
var observableArray = require("data/observable-array");
var viewModule = require("ui/core/view");
var items = [
new observableModule.Observable({name:"Item 1"}),
new observableModule.Observable({name:"Item 2"})
];
var pageData = new observableModule.Observable();
var page;
exports.onPageLoaded = function(args) {
page = args.object;
pageData.set("items",items);
page.bindingContext = pageData;
};
ListView には「項目 1」と「項目 2」が表示されるはずですが、「項目 2」と「項目 2」が表示されます。このスクリーンショットで問題を確認できます。
ちなみに現在のターゲットはAndroidです。
