Javascript 单击按钮方法在enyo.js中不起作用,但在加载列表或转发器时工作良好

Javascript 单击按钮方法在enyo.js中不起作用,但在加载列表或转发器时工作良好,javascript,enyo,Javascript,Enyo,我有一个repeater.js,在其中我获取加载值。这是setupItem方法 我想在点击一个按钮时得到相同的值。这个问题在列表和中继器的情况下都会出现…数据正在加载,但在按钮上它不工作…有人能帮忙吗 enyo.kind({ name: "enyo.sample.RepeaterSample", classes: "enyo-fit repeater-sample", components: [ {kind: "Repeater", onSetupItem

我有一个repeater.js,在其中我获取加载值。这是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");
    },
});
enyo.kind({
名称:“enyo.sample.RepeaterSample”,
课程:“enyo fit中继器样本”,
组成部分:[
{kind:“Repeater”,onSetupItem:“setupItem”,组件:[
{name:“item”,class:“repeater sample item”,组件:[
{标记:“span”,名称:“personNumber”},
{标记:“span”,名称:“personName”}
]}
]},
//{kind:“onyx.Button”,内容:“Fetch”,ontap:“setupItem”}
],
创建:函数(){
这是继承的(论点);
this.$.repeater.setCount(this.people.length);
这个。人变了();
},
出版:{
人:[]
},
peopleChanged:function(){
对于(变量i=0;i<5;i++){
这.人(i)="艺术"+i,;
}
this.$.repeater.setCount(this.people.length);
},
setupItem:功能(inSender、inEvent){
var指数=inEvent.index;
var item=inEvent.item;
警报(此.people[索引]);
var person=this.people[index];
//项目.$.personNumber.setContent((索引)+“);
项目$.personName.setContent(人);
//item.$.personName.applyStyle(“颜色”,person.sex=“男性”?“道奇蓝”:“深粉色”);
},
});

我想你可能对这里需要发生的事情感到困惑。setupItem方法只应在对其执行.setCount()或.build()操作时,响应列表引发的onSetupItem事件时调用


因此,按钮的ontap处理程序应该设置数组的内容,然后更改列表上的计数(使用setCount())或call.build()直接在上面。

y您不将该项保存在全局val中并在单击时使用它吗?@CodeJack如果我通过onSetupItem调用,则列表或中继器类型仅通过方法setupItem获取数据。如果我删除此onSetupItem,则它根本不加载数据……我想像调用自定义方法一样调用该方法……我不知道如何使用enyo提供该功能,但如果您无法在按钮单击时加载数据,一种方法是您可以在按钮单击时完全加载此中继器,而不仅仅是中继器中的数据。。。。