function processObj(obj) { for (var key in obj) { if (!obj.hasOwnProperty(key) || typeof obj[key] != "object") continue processObj(obj[key]); obj[key].__proto__ = obj; } } const app = getApp(); const configMap={ text: "${course_act_type}", type: "${course_act_type}", color: "black", CourseAttendance:{ text:"课堂签到开始了", type:"签到", color:"#09ad42" }, HomeworkCommon:{ practice:{ type: "实训作业", color: "#ce223e", url:"{shixun_homework}?homework_id=${course_act_id}" }, normal: { type:"普通作业", color:"#CC6633" }, text: "${container_name}", type:"作业", color:"#ac3f8a" }, CourseMessage: { type:"课堂申请", text:"申请加入课堂", color:"#3333FF" }, Course: { type:"创建课堂", text:"大家快来加入课堂学习吧", color:"#33DDAA" } } processObj(configMap); function get(obj, key) { if (typeof obj == "object" && key in obj) return obj[key]; else return {__proto__:obj}; } function format(str, values){ return str.replace(/\$\{(.*?)\}/, function (match, key) { return values[key] || ""; }); } Component({ properties: { data:{ type:Object, observer:function(data){ let config = get(configMap, data.course_act_type); config = get(config, data.container_type); this.config = config; data.text = format(config.text, data); data.type = format(config.type, data); data.color = config.color; data.time = data.created_at.replace(/^.+ /,""); this.setData(data); //console.log(data); } } }, data: { eduImgDir:global.config.eduImgDir }, methods: { onTap(){ let {url} = this.config; if(!url) return; url = format(url, this.data); app.navigateTo({url}); } } })