我现在知道的,View方面,在home的index template htdocs\views\default\home\index.tpl.htm里有一个id为notification_list的ul元素,后面通过ajax delayload 载入通知模块。
通知模块的template是htdocs\views\default\notifications\ajax\list.tpl.htm。
control调用方面,aws:app,通过htdocs\app\notifications\ajax.php的list_action函数调用get_notification_list。get_notification_list在htdocs\models\notify.php里实现。
list_action最后调用:
TPL::assign('list', $list);
TPL::output("notifications/ajax/list");
这个list被赋给通知模块的template:views\default\notifications\ajax\list.tpl.htm。list.tpl.htm根据通知数量生成li元素以及li元素下面的几个p元素,包括通知内容、发布时间等,用来做通知的布局,见下图:
然后就是最关键的htdocs\static\js\aws.js了,最终实现ajax效果的就是aws.js的load_notification_list函数通过调用notifications/ajax/list/flag-0__page-0,将list.tpl.htm 载入到notification_list这个ul里面。
load_notification_list是在aws.Message里调用的。
那么问题来了,aws.Message是什么时候由谁调用的呢?
有点乱,哪位大神帮忙整理一下思路,谢谢了。
---------------------------------
补充一下:
刚刚漏看了一个重要信息,load_notification_list是在aws.Message.check_notifications函数里调用的,而aws.Message.check_notifications是在app.js的$(document).ready方法里被调用的。
而app.js是在htdocs\system\aws_controller.inc.php的AWS_CONTROLLER构造函数里被引入的。
aws_controller.inc.php是在system.php里通过require引入的,system.php是在index.php里被引入的。。。
基本搞明白了。原谅我都是用倒叙的方式解开call stack。哪个大神帮忙再确认一下,看看有没有搞错什么东西。。。
阅读全文
收起全文