【问题标题】:Angularjs <div ng-controller override second ng-controller [closed]Angularjs <div ng-controller 覆盖第二个 ng-controller [关闭]
【发布时间】:2016-10-12 14:59:07
【问题描述】:

我正在为我的图表使用 AngularJS。

我必须创建两个图表,它们都使用相同的导航栏。

不过,我可以在屏幕上显示这两个图表;只有&lt;div ng-controller="first "&gt; 与导航栏一起使用。我的第二个 &lt;div ng-controller="second"&gt; 被覆盖。

<div ng-controller="first">
    <div ng-controller="second ">

这就是我在我的 HTML 中使用它的方式,

如果我将 &lt;div ng-controller="second "&gt; 替换为 &lt;div ng-controller="first"&gt;,ng-controller="second" 将与 dropdownm 一起正常工作,但 "first" 将被覆盖

这是我的JSBIN

我也试过这个answer on SO 要么它不适合我,要么我无法让它工作。

我的目标是在从下拉菜单中进行选择后更新这两个图表。由于&lt;div&gt; 问题,只有一个有效

【问题讨论】:

  • 您的问题根本不清楚。你想在这里说什么? “有替换我写&lt;div ng-controller="second "&gt;这会工作。”?该代码与它上面的代码相同吗?
  • 仍然很难理解您在问什么,但我认为您可能会问如何让子元素从其父元素访问元素。 (在这种情况下,second 是 first 的子级)。尝试查看$parent。
  • @Claies 我尝试编辑我的问题以更清楚一点。基本上发生的事情是,&lt;div&gt; 先出现,&lt;div&gt; 与下拉选择一起使用。其他 &lt;div&gt; 被覆盖

标签: javascript html angularjs d3.js


【解决方案1】:

因此,您希望对两个图表使用相同的过滤器,这些过滤器是根据两个不同控制器中可用的数据创建的。

您当前的方法只会更新 ng-model 为第二个控制器附加的值。相反,请尝试使用服务。让我们称之为chart.service

现在此服务可以具有日期、月份、年份等过滤器的值。让两个控制器都使用此服务,并在从 UI 更新时,使用您的控制器更新服务中的值。由于服务将有一个实例,因此两个控制器现在将具有相同的过滤器值,并且您的两个图表都将正确显示。

【讨论】:

  • Vivek,这听起来正是我所需要的,如果它不是太多的工作,你能给我演示一下吗?或者使用我的jsbin?我非常感谢您的帮助
  • 只需使用服务尝试一下,如果您有任何问题,请告诉我。你知道整个“教一个人如何钓鱼”:)
  • 我会试试的,也在这里分享我所做的:)
  • 我仍在尝试创建自定义服务,我以前从未创建过,所以它需要很多学习曲线,尤其是我对 Angularjs 很陌生。每当我完成时,我仍会与您分享反馈或错误:)
  • 我有点放弃了:/ 我确实学习了如何创建自定义服务,然后注入我的控制器中使用。但是我不知道要执行此部分“具有日期、月份、年份等过滤器的值”
猜你喜欢
  • 1970-01-01
  • 2013-11-03
  • 2016-09-04
  • 2017-02-02
  • 2014-12-23
  • 1970-01-01
  • 2014-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多