javascript - 我如何判断 Controller 内部是否是从 ng-controller 或路由运行的

标签 javascript angularjs

我有一个 AngularJS Controller ,它在路由中定义的特定页面上使用:

when("/search/:term", {controller:'SearchCtrl',  templateUrl:'/static/templates/supersearch/list.html'});

并且还附加到 header 中的元素,该元素在所有页面上使用:

<div ng-controller="SearchCtrl">
  <form class="navbar-form pull-left super-search">
    ...
  </form>
<div>

如何从 Controller 内部得知它正在哪个上下文中运行?

我尝试过的事情:

ng-init

我尝试使用<div ng-controller="SearchCtrl" ng-init="init(true)">告诉 Controller 它是否正在从标题搜索表单运行,但似乎 ng-init在 Controller 之后执行,因此它无权访问传递的参数。

传递 $element

如果我注入(inject)$element对于 Controller ,我能够访问 ng-controller 的 DOM 节点附加了指令,但是在带有路由的页面的情况下, Angular 会引发错误,因为没有 $element可注入(inject)。

因此,我要么需要某种方法将参数传递给 Controller ​​,要么需要某种方法来告诉 Controller 正在从哪个上下文运行(内联 ng-controller 与路由)。谢谢!

最佳答案

我建议使用注入(inject)的 $routeParams service 来区分情况进入 Controller 的功能。

关于javascript - 我如何判断 Controller 内部是否是从 ng-controller 或路由运行的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17336524/

相关文章:

javascript - 多 div 的动画滚动顶部问题

javascript - 输入不会更新 javascript

javascript - 条件渲染和 ReactCSSTransitionGroup 动画

javascript - 为什么以下 Javascript 在 Firefox 12 上不起作用,但在 IE9 上起作用?

带有 angularJS 应用程序的 ASP.NET MVC 区域

javascript - ng-click 不适用于动态包含

angularjs - 需要帮助在 angularjs 中使用 visjs 创建网络图

javascript - Jquery 函数没有正确链接?为什么我的 &lt;script&gt; 部分无法运行?

angularjs - 将 $http 响应对象保存为 $scope 变量

angularjs - UI路由器状态更改,在下一个状态触发youtube视频播放