前言:
经常在论坛、群里看到有人问这个问题。
分析:
以Axure RP9为例,我们分析安装目录下的DefaultSettings\Prototype_Files\resources\scripts\repeater.js,很容易发现下面代码:
经过简单分析,可以看出,先是使用循环判断了一下obj.type是否为中继器,然后进行使用。
改造:
那么可以将该过程稍微改造一下,判断出我们需要的中继器即可:
假如中继器的名称为“repeaterName”,那么可直接使用getRepeaterData(‘@repeaterName’)拿到中继器的所有数据了。
为了方便大家复制,我把代码也贴在下面,如果有前端大神也可帮忙优化一下,谢谢:
function getRepeaterData(name) {
let r, rid = $axure(name).$().get(0).id;
$axure(function (obj) {
return "repeater" === obj.type;
}).each(function (obj, repeaterId) {
rid === repeaterId && (r = obj)
})
return r.data;
}
以上是直接返回详细数据r.data,如果想要中继器包括列名及其他全部属性,也可以直接return r,再根据自身需求调整。
function getRepeater(name) {
let r, rid = $axure(name).$().get(0).id;
$axure(function (obj) {
return "repeater" === obj.type;
}).each(function (obj, repeaterId) {
rid === repeaterId && (r = obj)
})
return r;
}
let r = getRepeater('@repeaterName');
$axure.setGlobalVariable('OnLoadVariable', JSON.stringify(r.data));
console.log(r.dataProps, r.data);
应用:
可以参考《在Axure中注入Javascript脚本的极简方法》,同时也可以使用$axure.setGlobalVariable()写到全局变量里以方便Axure内部元件使用。
如果觉得我的教程做的不错呢,欢迎关注、收藏、转发、捐赠,谢谢。