最新消息:

如何通过Javascript读取Axure中继器里的数据

Axure高级教程 Jorkin 255浏览

前言:

经常在论坛、群里看到有人问这个问题。

分析:

以Axure RP9为例,选择的版本是9.0.0.3743,我们分析安装目录下的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内部元件使用。

如果觉得我的教程做的不错呢,欢迎关注、收藏、转发、捐赠,谢谢。

原文链接:如何通过Javascript读取Axure中继器里的数据

转载请注明:最InのAxure » 如何通过Javascript读取Axure中继器里的数据