Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 当ng show最初关闭div时,amcharts图表不显示_Angularjs_Ionic Framework_Amcharts - Fatal编程技术网

Angularjs 当ng show最初关闭div时,amcharts图表不显示

Angularjs 当ng show最初关闭div时,amcharts图表不显示,angularjs,ionic-framework,amcharts,Angularjs,Ionic Framework,Amcharts,我在一个div中有一个amchart,它的显示/隐藏由angularjs管理。有时它会绘制内存中已有的数据。在这种情况下,将打开div,呈现图表,其中的SVG宽度为10。因此,图表不会出现在屏幕上。调整窗口大小一点点,图表就会出现,因为我猜amcharts正在侦听调整大小事件。我认为这是一个已知的问题——我已经看到一些关于它们的SO帖子,我希望其中一个能为我工作。我的怀疑是,在阿姆查特发挥它的魔力之前,角度机器并没有周期性地打开div(只是一种预感,没有确凿的证据) 接下来,我添加了一个事件观察

我在一个div中有一个amchart,它的显示/隐藏由angularjs管理。有时它会绘制内存中已有的数据。在这种情况下,将打开div,呈现图表,其中的SVG宽度为10。因此,图表不会出现在屏幕上。调整窗口大小一点点,图表就会出现,因为我猜amcharts正在侦听调整大小事件。我认为这是一个已知的问题——我已经看到一些关于它们的SO帖子,我希望其中一个能为我工作。我的怀疑是,在阿姆查特发挥它的魔力之前,角度机器并没有周期性地打开div(只是一种预感,没有确凿的证据)

接下来,我添加了一个事件观察程序

piechart.write(divs.chart_div.attr('id'));
divs.chart_div.on('yes', 'snowy', function(){ // same with 'shown','resize'
    console.info('============= woah ========');
});
现在发生了一件奇怪的事情。我在控制台中看到以下错误堆栈

Error: [jqLite:onargs] jqLite#on() does not support the `selector` or `eventData` parameters http://errors.angularjs.org/1.3.13/jqLite/onargs
at REGEX_STRING_REGEXP (http://localhost:8100/lib/ionic/js/ionic.bundle.js:8762:12)
at jqLiteOn (http://localhost:8100/lib/ionic/js/ionic.bundle.js:11733:39)
at Object.JQLite.(anonymous function) (http://localhost:8100/lib/ionic/js/ionic.bundle.js:11951:17)
at Object.makePieChart (http://localhost:8100/common/services/graphinghelperService.js:528:34)
at obj.controller.$scope.myExt.renderFunc (http://localhost:8100/directives/boxRenderers2.js:179:24)
at _render_it (http://localhost:8100/modules/dashboard/dashboard.js:246:30)
at $scope.showBox.deferred.promise.then.workarea.showChild (http://localhost:8100/modules/dashboard/dashboard.js:310:17)
at processQueue (http://localhost:8100/lib/ionic/js/ionic.bundle.js:21888:27)
at http://localhost:8100/lib/ionic/js/ionic.bundle.js:21904:27
at Scope.$get.Scope.$eval (http://localhost:8100/lib/ionic/js/ionic.bundle.js:23100:28)
这种古怪的行为已经消失了!如果我单击以从缓存数据中重新绘制图表,则会显示该图表,再次单击时会隐藏该图表,并且一切正常。再也看不到背景色平淡的div了

但是,如果我将手表更改为
divs.chart\u div.on('showed',function(){
,则不会调用事件处理程序,并且当从缓存数据中呈现时,图表也不会显示

我想知道发生了什么。

看起来好像有什么东西(可能是armchart库?)希望jQuery可以绑定到事件。Angular附带了jqLite,这是jQuery的精简版本,所以您会遇到这种异常

我猜这条线上有什么东西

at Object.makePieChart (http://localhost:8100/common/services/graphinghelperService.js:528:34)

使用完整版本的jQuery来解决这个问题:

A
watch
是angular通过“监视”来响应不断变化的数据的能力它使用的是事件,而不是表。完全不同的东西。在你的依赖项中包含jQuery,这个错误清楚地说明了它为什么被抛出。角度内部使用JQLITE,它不支持事件的选择器。AMSCORE不依赖于jQuery,因此它不能与被加载或不加载有关。请考虑更新到最新记录。amCharts库的ent版本(3.14.2)它包含容器大小/可见性更改的自动监视(与早期版本中监视窗口大小的更改相反)。如果此操作失败,请尝试点击Angular的事件并调用invalidateSize()当显示图表容器时,在您的图表对象上。谢谢。升级会按照建议修改行为,而无需点击任何事件或invalidateSize(),您当然是对的(我不想使用完整的jQuery),但我真正好奇的是,为什么我的图表突然出现……我的猜测是,html元素的维度无法在此时计算,因为它们不在屏幕上。我在其他一些库中遇到了这个问题。作为ngShow的替代方案,解决这个问题的一种方法是创建一个CSS类,该类将在屏幕外的某个位置显示图表。使用ngClass使用与ngShow相同的条件应用规则。HTML:
此处显示图表!
CSS:
。隐藏图表{位置:绝对;顶部:-9999px;左侧:-9999px;}