0

私はrepeater.jsを持っています.mはロード時に値を取得します.それはsetupItemメソッドです..

ボタンのクリックで同じ値を取得したい..この問題は、リストとリピーターの両方の場合に発生します...データはオンロードでロードされますが、ボタンでは機能しません...誰か助けてください....

enyo.kind({
    name: "enyo.sample.RepeaterSample",
    classes: "enyo-fit repeater-sample",
    components: [
        {kind: "Repeater", onSetupItem:"setupItem", components: [
            {name:"item", classes:"repeater-sample-item", components: [
                {tag:"span", name: "personNumber"},
                {tag:"span", name: "personName"}
            ]}
        ]},
        //{kind: "onyx.Button", content:"Fetch", ontap:"setupItem"}
    ],
    create: function() {
        this.inherited(arguments);
        this.$.repeater.setCount(this.people.length);
        this.peopleChanged();
    },
    published: {
        people: []
    },
    peopleChanged: function() {
        for(var i=0;i < 5;i++){
            this.people[i]="art "+i;
        }
        this.$.repeater.setCount(this.people.length);
    },
    setupItem: function(inSender, inEvent) {
        var index = inEvent.index;
        var item = inEvent.item;
        alert(this.people[index]);
        var person = this.people[index];
        //item.$.personNumber.setContent((index) + ". ");
        item.$.personName.setContent(person);
        //item.$.personName.applyStyle("color", person.sex == "male" ? "dodgerblue" :        "deeppink");
    },
});
4

1 に答える 1

0

ここで何が起こる必要があるのか​​混乱しているかもしれません。setupItemメソッドは、リストに対して.setCount()または.build()を実行したときにリストによってスローされるonSetupItemイベントに応答してのみ呼び出す必要があります。

したがって、ボタンのontapのハンドラは、配列の内容を設定してから、リストのカウントを変更するか(setCount()を使用)、直接.build()を呼び出す必要があります。

于 2012-09-07T14:59:41.167 に答える