游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

灵光一闪!帮你使用Vue,搞定无法解决的动态挂载

  在一些特殊场景下,使用组件的时机无法确定,或者无法在Vue的template中确定要我们要使用的组件,这时就需要动态的挂载组件,或者使用运行时编译动态创建组件并挂载。
  今天我们将带大家从实际项目出发,看看在实际解决客户问题时,如何将组件进行动态挂载,并为大家展示一个完整的解决动态挂载问题过程。
  无法解决的动态挂载
  我们的电子表格控件SpreadJS在运行时,存在这样一个功能:当用户双击单元格会显示一个输入框用于编辑单元格的内容,用户可以根据需求按照自定义单元格类型的规范自定义输入框的形式,集成任何Form表单输入类型。
  这个输入框的创建销毁都是通过继承单元格类型对应方法实现的,因此这里就存在一个问题这个动态的创建方式并不能简单在VUEtemplate中配置,然后直接使用。
  而就在前不久,客户问然询问我:你家控件的自定义单元格是否支持Vue组件比如ElementUI的AutoComplete?
  由于前面提到的这个问题:
  沉思许久,我认真给客户回复:组件运行生命周期不一致,用不了,但又话锋一转,表示可以使用通用组件解决这个问题。
  问题呢,是顺利解决了。
  但是这个无奈的用不了,却也成为我这几天午夜梦回跨不去的坎。
  后来,某天看Vue文档时,我想到App是运行时挂载到app上的。从理论上来说,其他组件也应该能动态挂载到需要的Dom上,这样创建时机的问题不就解决了嘛!正式开启动态挂载
  让我们继续查看文档,全局APIVue。extend(options)是通过extend创建的。Vue实例可以使用mount方法直接挂载到DOM元素上这正是我们需要的。创建构造器varProfileVue。extend({template:p{{firstName}}{{lastName}}aka{{alias}},data:function(){return{firstName:Walter,lastName:White,alias:Heisenberg}}})创建Profile实例,并挂载到一个元素上。newProfile()。mount(mountpoint)
  按照SpreadJS自定义单元格示例创建AutoCompleteCellType,并设置到单元格中:functionAutoComplateCellType(){}AutoComplateCellType。prototypenewGC。Spread。Sheets。CellTypes。Base();AutoComplateCellType。prototype。createEditorElementfunction(context,cellWrapperElement){cellWrapperElement。setAttribute(gcUIElement,gcEditingInput);cellWrapperElement。style。overflowvisibleleteditorContextdocument。createElement(p)editorContext。setAttribute(gcUIElement,gcEditingInput);leteditordocument。createElement(p);自定义单元格中editorContext作为容器,需要在创建一个child用于挂载,不能直接挂载到editorContext上editorContext。appendChild(editor);returneditorContext;}AutoComplateCellType。prototype。activateEditorfunction(editorContext,cellStyle,cellRect,context){letwidthcellRect。width180?cellRect。width:180;if(editorContext){创建构造器varProfileVue。extend({template:p{{firstName}}{{lastName}}aka{{alias}},data:function(){return{firstName:Walter,lastName:White,alias:Heisenberg}}})创建Profile实例,并挂载到一个元素上。newProfile()。mount(editorContext。firstChild);}};
  运行,双击进入编辑状态,结果却发现报错了
  〔Vuewarn〕:YouareusingtheruntimeonlybuildofVuewherethetemplatecompilerisnotavailable。Eitherprecompilethetemplatesintorenderfunctions,orusethecompilerincludedbuild。
  根据报错提示,此时我们有两种解决办法:开启runtimeCompiler,在vue。config。js中加入runtimeCompiler:true的配置,允许运行时编译,这样可以动态生成template,满足动态组件的需求提前编译模板仅动态挂载,autocomplete的组件是确定的,我们可以使用这种方法
  新建AutoComplete。vue组件用于动态挂载,这样可以挂载编译好的组件。templatep{{firstName}}{{lastName}}aka{{alias}}templateimportAutoComplatefrom。AutoComplate。vueAutoComplateCellType。prototype。activateEditorfunction(editorContext,cellStyle,cellRect,context){letwidthcellRect。width180?cellRect。width:180;if(editorContext){创建构造器varProfileVue。extend(AutoComplate);创建Profile实例,并挂载到一个元素上。newProfile()。mount(editorContext。firstChild);}};
  双击进入编辑状态,看到组件中的内容
  下一步,对于自定义单元格还需要设置和获取组件中的编辑内容,这时通过给组件添加props,同时在挂载时创建的VueComponent实例上直接获取到所有props内容,对应操作即可实现数据获取设置。
  更新AutoComplate。vue,添加props,增加input用于编辑templatep{{firstName}}{{lastName}}aka{{alias}}inputtypetextvmodelvaluetemplate
  通过this。vm存储VueComponent实例,在getEditorValue和setEditorValue方法中获取和给VUE组件设置Value。编辑结束,通过调用destroy()方法销毁动态创建的组件。AutoComplateCellType。prototype。activateEditorfunction(editorContext,cellStyle,cellRect,context){letwidthcellRect。width180?cellRect。width:180;if(editorContext){创建构造器varProfileVue。extend(MyInput);创建Profile实例,并挂载到一个元素上。this。vmnewProfile()。mount(editorContext。firstChild);}};AutoComplateCellType。prototype。getEditorValuefunction(editorContext){设置组件默认值if(this。vm){returnthis。vm。value;}};AutoComplateCellType。prototype。setEditorValuefunction(editorContext,value){获取组件编辑后的值if(editorContext){this。vm。valuevalue;}};AutoComplateCellType。prototype。deactivateEditorfunction(editorContext,context){销毁组件this。vm。destroy();this。vmundefined;};
  整个流程跑通了,下来只需要在AutoComplate。vue中,将input替换成ElementUI的elautocomplete并实现对应方法就好了。结果
  让我们看看效果吧。
  其实动态挂载并不是什么复杂操作,理解了Vue示例,通过vm来操作实例,灵活的运用动态挂载或者运行时编译的组件就不是什么难事了。
  其实一切的解决方案就在Vue教程入门教程中,但是脚手架的使用和各种工具的使用让我们忘记了Vue的初心,反而把简单问题复杂化了。
  今天的分享到这里就结束啦,后续还会为大家带来更多严肃和有趣的内容
  你有什么在开发中忘记初心的事情吗?
  葡萄城微信号:葡萄城社区。

荣诚首创潮式雪媚娘蛋黄月饼玩转月饼新食尚中秋佳节将至,各大厂家都使出了浑身解数,月饼大战已拉开序幕,为满足各类消费者的送礼需求,不同包装的月饼纷纷登场:红木盒、精铁盒、高档纸盒,甚至是镶金盒等天价月饼盒接踵而至,购买……导致刹车异响的5个原因,每1个都很常见,教你自己动手解决刹车异响太令人厌烦了,对于有一定驾龄的朋友来说深有体会。刹车系统是汽车上的重要组成部分,当刹车系统介入工作时,即便是很小的异常因素也会导致异响。而在我们日常生活中,导致刹车异响……译文你应该知道的11个微前端框架原文链接:https:itnext。io11microfrontendsframeworksyoushouldknowb66913b9cd20作者:JonathanSar……沙尘暴袭来话环保主题信用卡今天,以北京为首的华北地区再次遭遇沙尘暴和雾霾围城,一早醒来就被眼前所见惊呆了。今天,空气质量指数AQI一直为500,空气质量处于严重污染状况,能见度已成近几年最差水平。……小米9指纹解锁都有广告?首批用户这么评价,真精彩昨天小米953秒售罄,根据推测线上平台的量在5万左右。抢到的人是小部分,依然有很多人在等待或者观望,现在就带大家看看昨天抢到的用户是怎么评价小米9的。京东小米9的评价有2……乐心ZIVAPlus,可能是目前最好用的智能手环作为乐心老用户,其智能手环以其易用性和人性化设置给我留下了良好印象。我一直使用的手环就是去年推出的ZIVA,感兴趣的朋友可以看看我去年的体验文章《乐心智能手环ziva:舒适易用……开学换新手机便签内容怎么导入新手机9月份对学生们来说是一个重要的时间,因为每年的9月份是暑假结束,迎来开学季的月份。对于很多同学们来说,如果自己的手机比较老旧的话,那么开学的时候换一部新手机是一个不错的选择,开……两大指标透露机构加仓踪迹两大指标:机构调研股东人数机构调研,机构在加仓前,必然先到企业调研,机构调研次数这一指标可以完整地揭示一家企业被机构关注的程度。如2010年迈瑞医疗被机构调研4300次,……金融投资机构要在乡村振兴创新投入方式中找到切入点中央有关文件指出,要根据各地农业农村实际发展情况,因地制宜创新投融资模式,通过独资、合资、合作、联营、租赁等途径,采取特许经营、公建民营、民办公助等方式,健全联农带农有效激励机……ampampquot极光ampampquot加身,比亚迪汉E纯电顶流汉EV,新增极光蓝车衣、金鳞橙内饰配色,于9月28日惊艳上市。全新配色的设计灵感来源于自然界的极光、波光、暮光三种绝美之光,将自然色彩美学融入到外观内饰设计中,满……社交元宇宙Soul正排解着Z世代的孤独感社交新生物SoulApp在Z世代用户中的异军突起,很好地证明了一点:传统的熟人社交和陌生人社交对年轻一代的吸引力越来越弱。究其原因,其实在于熟人社交和陌生人社交都难以就降低孤独……从技术角度分析,中国平安本轮反弹将超过60元中国平安属于保险公司,而保险虽然属于金融行业,但是也是属于消费行业,毕竟保险的消费属性更多点,所以参考本轮反弹比较大的几个龙头公司进行技术指标的分析。中国平安本轮跳空大涨反弹已……
让司机群体更有归属感曹操出行送司机免费游海岛碧水、沙滩、阳光浴吃海鲜、喝椰汁、挖椰肉,感受徐徐海风从脸庞拂过,最近,刚结束海南岛五日游不久的曹操出行司机师傅们圆满的回到了家中。据悉,这正是曹操中国好司机团队的出游活动,自……iQOO5Pro评测一个超满分的旗舰手机,到底怎么样性能如赛车,充电同火箭,我觉得这两句话来形容它是最直接的。这就是iQOO5的大哥,iQOO5Pro。到手iQOO5Pro的时间其实不算太久,所以我将这段时间的体验感受和大家简单……白话NBA独行侠双杀快船后,有个人会让快船沉得更快文大白大家好,我是大白。欢迎来到我的白话频道。今天我们应广大白话粉丝的要求说一下快船被独行侠双杀事件。有人说,自打格里芬加盟快船以来,这支快船在让人失望的道路……众多白嫖党,还被线上书店冲击,新华书店利润为什么还能正增长?你的童年,我的童年,都少不了一个新华书店。小时候最喜欢干的事,莫过于去新华书店,一泡就是一个下午,家里不舍得买的图书随边看,不舍得吹的空调随便吹。你是否好奇:这么多年,地……二十年数据灰飞烟灭,你是如何存储你的数码照片的?几天前我坏了一块4T的备份磁盘,里面存储了将近20年的数码照片,过程很简单,这块硬盘还是去年12月刚买的,拷贝完照片之后就基本没有再动过,这次准备备份一些照片,结果新建文件夹的……无土栽培这样的种植,接地气平民化,是设施农业未来发展的方向无土栽培,对于普通的老百姓而言只是听得多、见得少,更别说有相关的种植经历了。觉得无土栽培种植是一项非常高端、大气、上档次的种植模式,只有高科技人员才能进行种植的项目。其实并不是……生菜雾培模式,增加种植面积提高产量,非塔型雾培设计莫属导读:关于生菜的无土栽培,它的目的非常简单。就是为了提高种植面积,增加产量。想要在同等的种植条件下,解决种植规模与产量的问题,关键就是解决种植方案的问题。而整个无土栽培行业中,……屏下摄像头旗舰影像系统,中兴有这么多黑科技,为啥就是不火?中兴!为啥总也火不了?现在手机市场最受关注的是小米,原因就在于即将发布的小米MIX4,会搭载屏下摄像头技术。可很多人不知道,首发屏下摄像头的并非小米,中兴在去年就已经发布了搭载……WiFi7标准各大企业贡献榜华为力压群雄荣登世界第一这是目前各大企业对于最新一代WiFi7的标准贡献榜,华为荣登世界第一!下图就是华为对于WiFi技术方面的探索贡献,从一开始的0到现在的1,其中的艰辛也是不为人知的,我们相……有态度有思考,在少年说唱企划里看见年轻人的热爱与表达今天来这里就想看一下,他们说的下一个时代到底是什么样子,我已经迫不及待了。GAI周延的入场宣言,代表了大多数观众对《少年说唱企划》这档节目和这群少年的期待想要看到流行文化的迭代……PCB板载天线WiFi模块SKYLABUART接口WiFi模基于射频技术的无线模块需要通过天线来发射和接收电磁波信号,市场上常见的天线类型有陶瓷天线、板载天线、棒状天线以及外接天线,外接天线是通过在PCB板上预留IPEX座子,可选天线类……好线路搭配好零件SoulnoteP3前级日本的Soulnote是个技术根底深厚的音响公司,高层都是在当年PhilipsMarantz服务的工程师,后来因为公司改组,这群工程师才因理念不同而出走,自行创立CSR公司,之……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网