【发布时间】:2014-11-01 00:41:07
【问题描述】:
我在我的网络应用程序中同时使用AngularJS 和FusionCharts。即将发布的 AngularJS v1.3.0 will require there to be a <base> tag in the HTML head,以便解析所有相关链接,无论应用托管在站点目录的哪个位置。
在最新版本的 FusionCharts(当前为 v3.4.0)中包含 <base> 标签时,3D 图表无法正确渲染。例如,一个 3D 饼图出现并具有旋转和可点击的切片,以及切片内边缘的工具提示和颜色。不过整个外层颜色都是黑色的。
排除<base> 标记会导致图表的外观和行为正常。
有人知道如何解决这个问题吗?不幸的是,我不拥有源代码,否则我会自己破解它。
这是非工作 jsFiddle 的链接:http://jsfiddle.net/aaronaudic/59Bmf/207
解决方案:
我最初将正确的解决方案授予@pankaj,因为他在页面加载时简单地添加以下行的解决方案似乎解决了问题:
document.getElementsByTagName("base")[0].setAttribute("href", window.location.pathname+window.location.search);
但是,这仅在图表位于最初加载的页面上时才有效(当用户直接导航到带有图表的页面时);当通过ui-router 之类的方式导航到页面时,我仍然看到黑色。
正确答案来自@Shamasis。将以下内容添加到页面加载将解决应用程序范围内的问题:
eve.on('raphael.new', function () {
this.raphael._url = this.raphael._g.win.location.href.replace(/#.*?$/, '');
});
他最初的警告提到导出功能可能会受到云端的阻碍,这可能是(我不从云端导出)。但是,在这个 jsFiddle 中可以观察到,本地导出效果很好:http://jsfiddle.net/aaronaudic/Gs6sN/14
我的基本标签,在页面的头部,很简单:
<base href="/">
【问题讨论】:
-
检查应用的样式,在网络面板中查找对 CSS 文件的失败请求,也许需要更新 Fusion Charts 中的某些内容以使用绝对路径。如果您在 chrome 调试工具的控制台或网络面板中看到任何 404,那么您可以向 Fusion Charts 提交错误报告或搜索该 URL 的源并修复它。
-
能把代码放到jsfiddle上吗?
-
@pankaj 这是问题jsfiddle.net/aaronaudic/59Bmf/207 的最基本示例。我所做的只是采用 FusionChart 自己的示例,并在 head 部分添加了一个
标记。删除它将解决问题。这个问题显然在没有 AngularJS 的情况下存在,所以现在,忽略这方面。 -
Angular 2+ 的任何提示?我找不到获得
eve参考的方法。
标签: javascript html angularjs fusioncharts