0

私は配列を持っています。enyo.jsで配列の値を渡したいです。

配列を動的に設定するにはどうすればよいですか?

コードは次のとおりです。

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"}
        ]}
    ]}
],
create: function() {
    this.inherited(arguments);
    this.$.repeater.setCount(this.people.length);
},
setupItem: function(inSender, inEvent) {
    var index = inEvent.index;
    var item = inEvent.item;
    var person = this.people[index];
    item.$.personNumber.setContent((index+1) + ". ");
    item.$.personName.setContent(person.name);
    item.$.personName.applyStyle("color", person.sex == "male" ? "dodgerblue" : "deeppink");
},
people: [
    {name: "Andrew", sex:"male"},
    {name: "Betty", sex:"female"},
    {name: "Christopher", sex:"male"},
    {name: "Donna", sex:"female"},
    {name: "Ephraim", sex:"male"},
    {name: "Frankie", sex:"male"},
    {name: "Gerald", sex:"male"},
    {name: "Heather", sex:"female"},
    {name: "Ingred", sex:"female"},
    {name: "Jack", sex:"male"},
    {name: "Kevin", sex:"male"},
    {name: "Lucy", sex:"female"},
    {name: "Matthew", sex:"male"},
    {name: "Noreen", sex:"female"},
    {name: "Oscar", sex:"male"},
    {name: "Pedro", sex:"male"},
    {name: "Quentin", sex:"male"},
    {name: "Ralph", sex:"male"},
    {name: "Steven", sex:"male"},
    {name: "Tracy", sex:"female"},
    {name: "Uma", sex:"female"},
    {name: "Victor", sex:"male"},
    {name: "Wendy", sex:"female"},
    {name: "Xin", sex:"male"},
    {name: "Yulia", sex:"female"},
    {name: "Zoltan"},
]

});

この場合、人々はハードコーディングされています。json から動的に取得する値を指定したいと考えています。

助けてください。ありがとう。

4

1 に答える 1

1

JSON の配列を取得したら、this.people = [JSON からのデータ] を設定するだけです。これは、コードが同じトップレベルの種類 (enyo.sample.RepeaterSample) に含まれている場合に機能します。

JSON の戻り値が別の種類である場合は、おそらく enyo.sample.RepeaterSample の公開プロパティを次のように設定する必要があります。

published: {
   people: []
}

そして、setPeople(arrayOfPeople) を使用できます。peopleChanged メソッドでリピーターを自動的に再構築することもできます。

peopleChanged: function() {
   this.$.repeater.setCount(this.people.length);
}
于 2012-09-06T15:26:27.367 に答える