在组件中使用上下文组件
页面上最好只有一个上下文组件,当我们要开发的组件,需要使用上下文组件时,可以在向页面添加组件时,使用页面上已有的上下文组件,或者创建一个新的上下文组件
在组件的设计时js文件的init方法中,判断页面上有没有上下文组件,如果没有就创建一个上下文组件,代码如下
var ProjectQuery = ViewComponent.extend({
init : function(value, bindingContext) {
this.$domNode.addClass("cscecproject-ProjectQuery-designer");
this.callParent(value, bindingContext);
this.createContextComp();
},
createContextComp: function(){
var $wxContext = this.ownerDesigner.dataModel.$root.find("*[componentName='wxContext:wxContext']:first");
if ($wxContext.length == 0){
var self = this;
var $inv = this.ownerDesigner.dataModel.$root.find("*[componentName='$UI/wxsys/comps/inVisibleCompContainer/inVisibleCompContainer']:first");
var invID = $inv.attr("d_id");
xuiDoc.createComponent("wxContext:wxContext", invID, {
paintComponent : true,
autoSelect : false,
parent:invID
});
}
}
});
上下文组件支持使用 this.page.$$contextCompId 获取上下文组件的ID,在组件的运行时js文件中,用如下的代码获取上下文组件
let context = this.page.comp(this.page.$$contextCompId);