前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >when and where is getControllerName called

when and where is getControllerName called

作者头像
Jerry Wang
发布2019-06-22 14:19:16
4470
发布2019-06-22 14:19:16
举报

Created by Jerry Wang on Aug 07, 2014

  • localResources
  • registerModulePath

在开发js view时,需要实现一个方法getControllerName,并且正确返回该js view对应的controller name.

clipboard1
clipboard1

Callstack1: 这个方法从根源上说是在实例化JS view时被触发:

clipboard2
clipboard2

Callstack2: 以实例化时传入的参数来调用view方法:

clipboard3
clipboard3

Callstack3: 在view方法内,调用constructor sap.ui.core.mvc.JSView创建一个新的JS view实例:

clipboard4
clipboard4

Callstack4: 在_initCompositeSupport内部,调用function c. this指向正在初始化的Js view实例,s是传入的对象字面量。

clipboard5
clipboard5

Callstack5: 在function c的实现内,JS view实例是实参,传入形参t, line 41call 形参的getControllerName方法,因而会call 到application view里实现的getController方法

clipboard6
clipboard6

待application 返回controller name存入到变量d之后,UI framework将会以该名称创建一个controller instance:

clipboard7
clipboard7

Lazy load:

clipboard8
clipboard8

mymap.map传入方法q.sap.require:

clipboard9
clipboard9

准备加载文件mymap/map.controller.js. 注意系统是怎样将mymap.map 转化成mymap/map.controller.js的:

clipboard10
clipboard10

这里会去取对应的controller js文件。可见如果getControllerName 返回的controller内容不正确,这里将会load不了正确的controller文件。

clipboard11
clipboard11

可以做个试验:故意返回一个错误的controller name:

clipboard12
clipboard12

console里报错说找不到对应的controller文件:

clipboard13
clipboard13
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年06月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Created by Jerry Wang on Aug 07, 2014
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档