帮助列表
帮助列表
TIS 自定义界面

界面定制

在TIS初始化时需要填写template,我们已经提供了几个简单的模版。但是为了适应更多的场景,TIS是可以自定义界面的。
自定义模版对象需要实现如下几个函数:
onInitUI:           onInitUI,               //必须,在这个时机去初始化界面
onLoadHistory:      onLoadHistory,          //可选,加载历史消息时调用,不填则不加载
onLoadGroup:        onLoadGroup,            //加载分组完毕时调用
onLoadFaces:        onLoadFaces,            //加载表情完毕时调用
onReceiveMessage:   onReceiveMessage,       //收到消息时调用
以及如下属性:
historyPageSize:    10,                     //加载历史消息的条数
version:            1.1                     //模版的版本号,必须有,需要和tis基础库版本一致
下面按调用顺序介绍每一个函数:

onInitUI 界面初始化

//container为TIS初始化传递过来的第一个参数:TIS(".tis-container"...)
//其他函数如果出现container,也是这个参数
//options中有name和image属性
function onInitUI(container,options) {
    在这个函数中可以创建html界面代码,初始化界面,等
}

onLoadGroup 加载分组

//data是数组类型的分组数据:
[
    {
        icon: "https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=1734117139,1638127565&fm=58"
        id: 17
        index: 0
        name: "分组1"
        package: 0
        userId: 6225
    }
]
//groupClicked需要注册给元素的事件
function onLoadGroup(data, container, groupClicked) {
    //实例代码:
    var groups = $(container + " .tis-facegroups");
    for (var index in data) {
        var item = data[index];
        //创建分组元素,注意,需要给元素设置gid属性,并注册事件groupClicked
        var group = $('<a gid="' + item.id + '" ><img src="' + item.icon + '" /></a>');
        group.click(groupClicked);
        groups.append(group);
    }
}

onLoadFaces 加载某分组下的表情

//keys:用该keys中的项从faceMap中获取表情的具体信息
//groupId:要加载的表情所属的分组Id
//faceMap是一个关联数组,里面是表情的图片地址
function onLoadFaces(keys, faceMap, container, groupId) {
    //实例代码:
    for (var index = 0; index < keys.length; index++) {
        var item = keys[index];
        //item为表情对应的文本key
        //faceMap[item]为表情的图片地址
        //这里可以创建每一个表情了,当点击表情时,在发送文本框中追加item
    }
}

onLoadHistory 加载历史消息

//如果不需要加载历史消息可以不实现该函数
function onLoadHistory(data, container, faceMap, opts) {
    var list = data.list;
    var length = 0;
    if (list) {
        length = list.length;
    }
    for (var index = length - 1; index >= 0;--index) {
        var item = list[index];
        if (!item.content) continue;
        var msgdata;
        try {
            msgdata = JSON.parse(item.content);
            msgdata = opts.prepareMessage(msgdata); //预处理
            //在这里去添加消息,appendTisMessage是一个辅助函数,下面会介绍
            appendTisMessage(msgdata, faceMap);
        } catch (ex) {
            //一般不会有异常,但有些历史消息可能不符合消息格式。这里忽略这些消息。
        }   
    }
}

onReceiveMessage 收到消息

function onReceiveMessage(data, container, faceMap) {
    //添加消息到容器中
    appendTisMessage(data, faceMap);
}
//辅助函数
function appendTisMessage(data, faceMap) {
    //data.time 消息的时间
    //data.name 发送者名称
    //data.image 发送者头像
    //data.body //消息体
    //解析表情
    for (var item in faceMap) {
        data.body = data.body.replace(new RegExp("\\" + item, "g"), "<img src='" + faceMap[item] + "'/>");
    }
    //之后可以根据消息信息创建用于显示消息的元素了
}

参考

https://cdn.aodianyun.com/tis/ui/perty/js/tis-ui-1.1-perty.js


2006 - 2023 aodianyun.com, All Rights Reserved. 奥点科技 版权所有 增值电信业务经营许可证:浙B2-20110306 浙ICP备07500424号 |

  • 电话

    X

    售前咨询:

    400-663-6063

    售后服务:

    400-663-6063

  • 客服

  • 建议

    咨询留言 X
    提  交

在线QQ

售前咨询400-663-6063

售后服务400-663-6063