我有一个 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/