0

私の 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です。

4

2 に答える 2

1

このコードを試してください:

var items = new observableArray.ObservableArray([]);
var pageData = new observableModule.Observable();
var page;

exports.onPageLoaded = function(args) {
    page = args.object;
    items.push({name:"Item 1"});
    items.push({name:"Item 2"});
    pageData.set("items",items);
    page.bindingContext = pageData;
};

私の知る限り、observableArray はオブザーバブルの拡張クラスであるため、オブザーバブル配列の作成中に新しいオブザーバブル オブジェクトを作成する必要はありません。

于 2015-08-09T06:55:16.823 に答える