在做Cognos report 修改过程中遇到的几个jQuery 问题
Business Intelligence & bigdata 作为商业发展的重要引擎在企业决策中起到了重要的作用,而这些个所有的信息都需要可视化工具才能够呈现给终端用户,不管使用的工具是付费还是开源框架。
在我们项目中我们使用的是IBM 的 付费工具Cognos。
Cognos作为商业智能工具提供了强大的报表展示功能 ,在现在项目中我们主要使用了两个分析功能
1. 直接使用SQL 从数据库为报表提供数据 ,这种做法简单,但不易于维护和大量使用。在本文中我们将着重介绍下在这种使用方法下我们jQuery启的作用
2.另外一个就是按部就班的使用Framework 和 Transformer 建 package ,model cube ,mdl 文件 以及最后生成 mdc 文件 以及 dashboard 等 ,本流程过于复杂但是合乎规矩,不是本文讨论的重点
接下来我们 讨论下第一种情况 :
下图描述就是使用sql 直接为报表提供数据情况
在项目中可能遇到的一个情况就是从数据库提供的基础数据,如果存在空格或是一些个其他的影响页面展示效果的数据我们需要使用某些个方法修复下
而在这种情况下我们还是有多种方法暂时叫清洗数据的
1.直接在我们上图的SQL清洗把 不需要的数据去掉 ,或增加需要的数据
2.把原始数据原始的展示在我们的页面上,等整个page 页面加载完成后 我们在通过js 进行页面的修复
在我们的一些个项目中我们上述提到的方法都有所覆盖。第一种方法 只有对sql 所有了解 就能通过函数达到想要的效果 ;第二种方法如果有html 基础也不算难以实现 ,但是对我们做BI和大数据的同学来说还是需要付出不了解流程的代价的 。本文就是简单说明下我们在整个调整过程遇到的几个问题,以期望能够达到在后面的开发使用中不再或少再范相同的错误。
Cognow 作为report 展示工具 ,其原理依然是依赖于html 的,所以在html 使用 jQuery 也就不是什么新鲜问题了 ,毕竟其有强大的功能。
下面是我们在cognos page 开发中的一个缩影
首先我们需要在页面中引入 jQuery 包 等 ,后面再使用我们自己定义的function 函数等jQuery 信息,范的第一个错误就是 jQuery 包必须在我们定义的function 之前 。ballshit ,right
第二个问题 那就是必须引入jQuery 包了
第三个问题 就是语法问题了 ,现在上菜一段小代码:
<script language=javascript type='text/javascript'>
jQuery.noConflict();
jQuery(document).ready(function() { //jQuery(window).ready(function() ??
if(jQuery("#Gamma-kappa span").html()=='Gamma'){ //根据html Gamma-kappa span 标签找到 值 Gamma
jQuery('#html 标签').html(jQuery('#html 标签').html().replace(/<span>/g,'')); //根据标签查找html 页面并发出replace 命令
jQuery('#html 标签').html(jQuery('#html 标签').html().replace(/<span>/g,''));
jQuery("#html 标签").each(function(){
jQuery(this).html(jQuery(this).html().replace(/<span>/g,'<span>'))
})
}
});
</script>
以上就是今天的简单分享 ,众所周知 jQuery 功能强大,要想在此领域有所收获需要精心耕耘。
jQuery.noConflict(); 是什么意思 :
如何在页面上同时使用 jQuery 和其他框架?
jQuery 和其他 JavaScript 框架
正如您已经了解到的,jQuery 使用 $ 符号作为 jQuery 的简写。
如果其他 JavaScript 框架也使用 $ 符号作为简写怎么办?
其他一些 JavaScript 框架包括:MooTools、Backbone、Sammy、Cappuccino、Knockout、JavaScript MVC、Google Web Toolkit、Google Closure、Ember、Batman 以及 Ext JS。
其中某些框架也使用 $ 符号作为简写(就像 jQuery),如果您在用的两种不同的框架正在使用相同的简写符号,有可能导致脚本停止运行。
jQuery 的团队考虑到了这个问题,并实现了 noConflict() 方法。
jQuery noConflict() 方法
noConflict() 方法会释放会 $ 标识符的控制,这样其他脚本就可以使用它了。
实例
当然,您仍然可以通过全名替代简写的方式来使用 jQuery:
$.noConflict();jQuery(document).ready(function(){ jQuery("button").click(function(){ jQuery("p").text("jQuery 仍在运行!"); });});
实例
您也可以创建自己的简写。noConflict() 可返回对 jQuery 的引用,您可以把它存入变量,以供稍后使用。请看这个例子:
var jq = $.noConflict();jq(document).ready(function(){ jq("button").click(function(){ jq("p").text("jQuery 仍在运行!"); });});
实例
如果你的 jQuery 代码块使用 $ 简写,并且您不愿意改变这个快捷方式,那么您可以把 $ 符号作为变量传递给 ready 方法。这样就可以在函数内使用 $ 符号了 - 而在函数外,依旧不得不使用 "jQuery":
$.noConflict();jQuery(document).ready(function($){ $("button").click(function(){ $("p").text("jQuery 仍在运行!"); });});