时间紧任务重---extjs的学习就这么开始吧

我们的extjs借助了一个模板引擎--artTemplate,它是一个开源的项目,不多说,给个链接吧:http://aui.github.io/artTemplate/

 

直接上代码:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>loading...</title>
	<link href="resources/css/ext-all-debug.css" rel="stylesheet" type="text/css" />
	<link href="resources/css/base.css" rel="stylesheet" type="text/css" />
	<link href="resources/css/frame.css" rel="stylesheet" type="text/css" />
</head>
<body style="zoom: 1">

	<script id="template-nav-header" type="text/html">

		<div class="header">
			<a class="brand logo" href="javascript:;" onclick="mc.frame.ui.selected.header();"><? if (data.logo || data.logo != '') { ?><img src="<?=data.log ?>" /><? } ?><?=data.title ?></a>
			<nav>
				<? for (var i = 0; i < data.nav.length; i++) { ?>
					<li class="<? if (data.nav[i].nodes) { ?>more<? } ?>" tabindex="0" hidefocus="true">
						<a data-ajax="true" <?=createAttribute(data.nav[i]) ?>>
							<?include('template-nav-icon', {data: data.nav[i]}) ?>
							<?=data.nav[i].name ?>
						</a>
						<? if (data.nav[i].nodes) { ?>
							<?include('template-nav-header-more', {data: data.nav[i].nodes}) ?>
						<? } ?>
					</li>
				<? } ?>		
			</nav>
				
			<nav class="user-info" id="userinfo">
			</nav>
		</div>

	</script>

	<script id="template-nav-header-more" type="text/html">
		<?
			var column = data.length > 7 ? 7 : data.length;
		?>
		<ul class="more-nav column<?=column ?>" style="width: <?=column * 150 ?>px;">
			<? for (var i = 0; i < data.length; i++) { ?>
				<li>
					<a data-ajax="true" <?=createAttribute(data[i]) ?>>
						<?include('template-nav-icon', {data: data[i]}) ?>
						<?=data[i].name ?>
					</a>
				</li>
			<? } ?>
		</ul>
	</script>

	<script id="template-nav-userinfo" type="text/html">

		<li class="<? if (data.nodes) { ?>more<? } ?>" tabindex="0" hidefocus="true">
			<a href="javascript:;"><?=data.nickname ?></a>
			<? if (data.nodes) { ?>
				<ul class="more-nav column1">
					<? for (var i = 0; i < data.nodes.length; i++) { ?>
						<li><a data-ajax="true" <?=createAttribute(data.nav[i])?>>修改密码</a></li>
					<? } ?>
				</ul>
			<? } ?>
		</li>

	</script>

	<script id="template-nav-aside" type="text/html">
		<aside id="aside" class="aside">
			<? for (var i = 0; i < data.length; i++) { ?>
				<nav>
					<? if (data[i].nodes) { ?>
						<details open="true">
							<summary>
								<?include('template-nav-icon', {data: data[i]}) ?>
								<?=data[i].name ?>
							</summary>
							<?include('template-nav-aside-nodes', {data: data[i].nodes}) ?>
						</details>
					<? } else { ?>
						<?include('template-nav-aside-nodes', {data: [data[i]]}) ?>
					<? } ?>
				</nav>
			<? } ?>
		</aside>
	</script>

	<script id="template-nav-aside-nodes" type="text/html">
		<? for (var i = 0; i < data.length; i++) { ?>
			<a data-ajax="true" <?=createAttribute(data[i]) ?>>
				<?include('template-nav-icon', {data: data[i]}) ?>
				<?=data[i].name ?>
			</a>
		<? } ?>	
	</script>

	<script id="template-nav-icon" type="text/html">
		<? if (data.icon) { ?>
			<img src="<?=data.icon ?>">
		<? } ?>
	</script>

	<script src="resources/js/lib/jquery-1.10.2.min.js"></script>
	<script src="resources/js/lib/ext-all-dev.js"></script>
	<script src="resources/js/lib/ext-lang-zh_CN.js"></script>
	<script src="resources/js/lib/template.min.js"></script>
	<script src="resources/js/user/template-helper.js"></script>
	<script>
		template.openTag = "<?";
		template.closeTag = "?>";
	</script>
	
	<script src="app/app/admin.js"></script>

</body>
</html>

  可以看到js模板引擎的影子了,头部和左侧栏的显示就靠他了。一个最主要的文件 app/app/admin.js,这个是配置文件:

//系统配置,文件与类名对应的配置
Ext.Loader.setConfig({
	enabled: true,
	paths: {
		'mc': 'core',
		'admin': 'app',
		'custom': 'custom'
	}
});//开启动态加载

Ext.application({
	name: 'admin', //定义名字空间
	requires: ['custom.panelTab', 'mc.grid.PageCombo'],
	controllers: [ //加载控制层依赖
        'AdminController'
	],
	autoCreateViewport: true
});

path的配置很重要,项目目录和js的名字空间的对应关系就在这里了。有一点需要说一下,项目中的文件名要和文件中的名字空间保持一致,因为在mvc模式下所有文件都是按需加载的,如果不一致的话会报404错误。

另一个重要文件就是app/controller/AdminController.js了,所有代码逻辑的入口,各种数据的初始化都在init函数中完成。

 

 

 

posted @ 2013-08-23 15:27  龙则  阅读(363)  评论(0编辑  收藏  举报