ndoojs支持在页面中间暂存数据和事件,在页面底部基础库加载完成后调用。使用变量或事件暂存,需要在head标签处引入ndoo_prep.js。
1.变量暂存
通过ndoo.vars名称空间来进行变量赋值,在业务逻辑中使用。示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>vars</title>
<script src="js/ndoo_prep.js"></script>
</head>
<body>
<div id="content"></div>
<script>
ndoo.vars.getListUrl = '/list';
</script>
<div id="scriptArea" data-page-id="home/vars">
<script src="lib/underscore-min.js"></script>
<script src="lib/jquery-2.1.1.min.js"></script>
<script src="lib/Do.js"></script>
<script src="js/ndoo_all.js"></script>
<script src="js/homeApp.js"></script>
<script>
ndoo.init();
</script>
</div>
</body>
</html>
js/homeApp.js 部分
varsAction: function(param){
var $content;
$content = $('#content');
$content.html('getListUrl: ' + _vars.getListUrl);
}
示例代码:vars
一个常见的应用场景,服务端需要向前端代码传入动态生成的值(比如一个根据路由规则生成的API地址),并且由某个分部视图在页面中间直接输出js代码。
2.事件暂存
通过ndoo.on API注册事件,等到页面底部时触发。示例:
<div id="content" style="width: 300px; height: 300px;"></div>
<script>
ndoo.on('PAGE_STATUS_DOMPREP', function() {
$('#content').css('background-color', '#DDD');
});
</script><div id="scriptArea" data-page-id="home/eventStack">
<script src="lib/underscore-min.js"></script>
<script src="lib/jquery-2.1.1.min.js"></script>
<script src="lib/Do.js"></script>
<script src="js/ndoo_all.js"></script>
<script src="js/homeApp.js"></script>
<script>
ndoo.init();
</script>
</div>
eventStackAction: function(param){
var $content;
$content = $('#content');
$content.html('通过事件暂存改变方块颜色');
}
示例代码:event stack
上例在页面中间使用了事件暂存,监听PAGE_STATUS_DOMPREP事件,并在其中使用jQuery方法。jQuery库在底部加载,上例中ndoo会将事件暂存起来,等到执行ndoo.init以后PAGE_STATUS_DOMPREP事件触发时调用监听代码。
PAGE_STATUS_DOMPREP是ndoojs的一项默认事件,参见:事件参考