角度指令:如何控制图表的呈现时间
Angular Directives: How to control when chart is rendered
我正在尝试设置一个管理页面。有一堆元素,当您单击其中一个元素时,会出现一个包含更多信息的下拉列表,特别是高图表。目前我正在使用指令来创建图表div,但是我无法找到一种方法来控制何时呈现该指令,它会在页面加载时自动发生。
不幸的是,我有超过 200 个这样的元素,并且使用页面的当前设置,每次页面加载时都会呈现所有 200 个图表。显然,这会导致糟糕的用户体验。
总的来说,我对网络开发有点陌生。我不确定我是否以正确的方式处理了这个问题。以下是相关代码:
<div class="source" ng-repeat="source in sources">
...
<div source-dropdown-graph class="sources-dropdown-graph" ng-show="showDropdownGraph == source.myIndex" source="source"></div>
</div>
我正在使用 ng-show 在用户单击时切换图形的可见性。从指令:
return {
scope: {
source: "=source"
},
templateUrl: 'source-dropdown-graph.html',
link: link
};
链接函数只是呈现图形。最后是模板的 html:
<div id="chart-container" style="min-width: 70%; max-width: 1200px; height: 300px; margin: 0 auto"></div>
就像我说的,这一切都有效,除了立即渲染所有内容。我想在source
对象中设置一个标志,以确定是否呈现图表,但我不知道如何在该值更改时重新呈现它。在这种情况下,指令是正确的使用吗?就像我说的,我对 Web 开发仍然相对较新,所以我愿意以完全不同的方式做这件事。谢谢!
除了使用 ng-if
而不是 ng-show
来限制 DOM 中的元素数量之外,还可以在指令中使用监视来监视source
的更改并控制何时呈现或不呈现。
return {
scope: {
source: "="
},
templateUrl: 'source-dropdown-graph.html',
link: link
};
function link (scope, element, attrs) {
scope.$watch('source', function (newValue, oldValue) {
// condition(s) where you don't want to render
// i.e. if the source is undefined or null
if (!newValue || (newValue === oldValue)) {
return;
}
// otherwise, render it every time source changes
render();
});
function render () {
// your rendering logic
}
}
相关文章:
- Java脚本时间添加
- Javascript - 具有音高和持续时间控制的文本到语音
- 尝试使用jquery设置鼠标按下的时间来更改按钮触发器以控制音量滑块
- JS脚本在浏览器控制台或FireBug控制台上运行有时间限制吗
- 控制空闲时间外部页面
- 在 asp.net 中使用 Javascript 进行时间选择器控制
- 角度指令:如何控制图表的呈现时间
- 培根中的控制流程.js,如何在给定时间做某事
- 显示/隐藏元素 + 控制每个元素的单独时间
- Javascript:表格数据控制 - 如何在时间间隔上使用movenext
- JavaScript-表示浏览器控制台中每个命令的执行时间
- 控制MooTools 1.2中淡入淡出功能的持续时间
- 切换显示和控制多个时间序列地图在同一瓷砖层
- HTML5,视频和Javascript:使用视频时间轴来控制页面行为
- 是否有一个用于媒体播放器时间控制的HTML组件?
- 如何验证sharepoint日期时间控制
- 历史时间轴,控制左空间和宽度从JQuery生成
- 无限自动上下滚动,如何控制/配置速度,结束时的暂停时间
- 角度加载 css 文件需要时间并在控制台中抛出错误
- 创建图片库与控制的时间间隔由用户