我正在开发一个基于AngularJS 1.5的管理面板应用程序。其结构如下:
app
的主要组件,我在其中使用所有其他组件。 app.html
<div class="wrapper">
<message-component></message-component>
<header></header>
<leftbar></leftbar>
<body></body>
</div>
body
组件中,我使用ui-view
根据当前路线渲染我的组件。有一次,通常会出现三个组成部分:header
,leftbar
和body
。我在我调用函数的ng-if
组件中使用leftbar
指令。
leftbar.html
<li ng-if="leftbar.hasPermission('FOO')">
<a ui-sref="foo">
<span>Demo Page</span>
</a>
</li>
leftbar.controller
class LeftbarController {
constructor() {}
hasPermission(name) {
return user[name];
}
}
如果用户具有名为“FOO”的权限,它基本上显示<li>
。
现在,同时我的body
组件对用户也是可见的,并且内部存在一个输入字段,因此每当我在该字段中写入某些内容hasPermission
时,也会调用该方法,该方法存在于另一个组件中
那么这里的问题是什么?为什么范围表现得像这样?