当前位置: 首页 > news >正文

保定市城市规划建设局网站代写文章质量高的平台

保定市城市规划建设局网站,代写文章质量高的平台,网站开发遇到什么问题,精品网站建设费用 干净磐石网络这是view系列的第四篇文章,专门介绍View组件。 作为一个Component,它总共包含js、css、xml三个标准文件,当然最重要的是view.js 首先在setup函数中对传入的参数props做了各种校验,然后扩展了subenv useSubEnv({keepLast: new Kee…

这是view系列的第四篇文章,专门介绍View组件。
作为一个Component,它总共包含js、css、xml三个标准文件,当然最重要的是view.js

首先在setup函数中对传入的参数props做了各种校验,然后扩展了subenv

        useSubEnv({keepLast: new KeepLast(),config: {...getDefaultConfig(),...this.env.config,},...Object.fromEntries(CALLBACK_RECORDER_NAMES.map((name) => [name, this.props[name] || null])),});

这个env只会传递给子组件。
然后调用了loadViews函数

 onWillStart(() => this.loadView(this.props));

在loadViews函数中,调用了viewService,然后viewService从后端加载了view(有缓存机制)

            const result = await this.viewService.loadViews({ context, resModel, views },{ actionId: this.env.config.actionId, loadActionMenus, loadIrFilters });

根据从后端返回的xml结构,代码会将xml解析成一个对象,并读取其中的属性,
下面这段代码中,读取了js_class属性,并将它设置为subType,如果设置了这个属性,系统会从views注册表中读取相关的描述符来代替默认的描述符。
描述符是一结构体(字典),我们经常用来对视图进行扩展,定义号之后需要在viewRegistry中注册它,这里才能嗲用到。

还有banner_route属性
sample属性不知道是干嘛的

const archXmlDoc = parseXML(arch.replace(/ /g, nbsp));let subType = archXmlDoc.getAttribute("js_class");const bannerRoute = archXmlDoc.getAttribute("banner_route");const sample = archXmlDoc.getAttribute("sample");const className = computeViewClassName(type, archXmlDoc, ["o_view_controller",...(props.className || "").split(" "),]);// determine ViewClass to instantiate (if not already done)if (subType) {if (viewRegistry.contains(subType)) {descr = viewRegistry.get(subType);} else {subType = null;}}

后面的代码就是根据返回值在组装viewProps

        const viewProps = {info,arch: archXmlDoc,fields,relatedModels,resModel,useSampleModel: false,className,};

然后是准备WithSearch 组件的属性

 		const finalProps = descr.props ? descr.props(viewProps, descr, this.env.config) : viewProps;// prepare the WithSearch component propsthis.Controller = descr.Controller;this.componentProps = finalProps;this.withSearchProps = {...toRaw(props),hideCustomGroupBy: props.hideCustomGroupBy || descr.hideCustomGroupBy,searchMenuTypes,SearchModel: descr.SearchModel,};

看看结尾的部分:


View.template = "web.View";
View.components = { WithSearch };
View.defaultProps = {display: {},context: {},loadActionMenus: false,loadIrFilters: false,className: "",
};
View.props = {"*": true,
};
View.searchMenuTypes = ["filter", "groupBy", "favorite"];

看看它的xml模板

  <t t-name="web.View"><WithSearch t-props="withSearchProps" t-slot-scope="search"><t t-component="Controller"t-on-click="handleActionLinks"t-props="componentProps"context="search.context"domain="search.domain"groupBy="search.groupBy"orderBy="search.orderBy"comparison="search.comparison"display="search.display"/></WithSearch></t>

WithSearch 是一个虚拟组件,它本身不渲染任何东西,里面包括了一个动态组件Controller,这个其实就是各类视图的controller组件。 那render组件呢? 是controller组件的子组件吗? 这个问题留在后面去回答。

总结一波:
view组件通过viewService后缓存或者后端获取了view的信息,包括id,arch,model等,然后通过一个虚拟组件WithSearch 包裹了一个动态的controller组件,最终显示出来,那么view组件在哪里被调用的呢?这些疑问随着学习的深入我相信终究会找到答案。

http://www.yayakq.cn/news/910582/

相关文章:

  • 深圳企业建站程序网站怎样备案
  • 建站公司网站源码做一个网站平台的流程是什么
  • 建站报价网站的页脚
  • 网站里怎么做301指向人和动物做的电影网站
  • 山东青?u68元建网站seo是网站搜索引擎上的优化
  • 洛阳 网站建设 大师字画企业cms建站系统
  • 做网站不打广告怎么赚钱网站建设中常见的问题
  • 电商网站建站小制作简单易学
  • 备案需要网站空间电商自学网免费
  • 产品 网站建设简述网站开发的5个步骤
  • 兄弟们有没有没封的网站网站开发播放大视频卡顿
  • 个人网站备案 导航wordpress php 7.2
  • 怎么建设和聚享游一样的网站呢企业手机网站建
  • 铁岭网站建设网络优化高端网站制作费用
  • 深圳家居网站建设公司排名wordpress自动安装
  • 房地产政策最新消息辽宁seo推广软件
  • wordpress ogseo知识是什么意思
  • 建材企业网站推广方案青岛网站排名
  • 网站建设视觉效果聚企360做的网站
  • 做网站优化的协议书电商网站开发 思维导图
  • 免费企业信息查询网站已购买域名 如何做网站
  • 网站的基本布局做加盟童装交流网站
  • 天津大学生专业做网站北京专业制作网站公司
  • 中小型企业网站模板南京做网站xjrkj
  • 杭州网站设计 site百度怎样建立网站链接
  • 北京网站优化方案wordpress仪表盘定制
  • 重庆网站搭建哪里可以做上城网站建设
  • 简单的网站开发花蝴蝶免费视频在线观看高清版
  • 手机网站营销朝阳网站开发
  • 企业为什么要建设自己的网站什么是百度权重