Angularjs 多组件范围冲突
我正在开发一个基于AngularJS 1.5的管理面板应用程序。其结构如下:Angularjs 多组件范围冲突,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我正在开发一个基于AngularJS 1.5的管理面板应用程序。其结构如下: 有一个名为app的主要组件,我在其中使用所有其他组件 app.html <div class="wrapper"> <message-component></message-component> <header></header> <leftbar></leftbar> <body></
app
的主要组件,我在其中使用所有其他组件app.html
<div class="wrapper">
<message-component></message-component>
<header></header>
<leftbar></leftbar>
<body></body>
</div>
<li ng-if="leftbar.hasPermission('FOO')">
<a ui-sref="foo">
<span>Demo Page</span>
</a>
</li>
class LeftbarController {
constructor() {}
hasPermission(name) {
return user[name];
}
}
leftbar.controller
<div class="wrapper">
<message-component></message-component>
<header></header>
<leftbar></leftbar>
<body></body>
</div>
<li ng-if="leftbar.hasPermission('FOO')">
<a ui-sref="foo">
<span>Demo Page</span>
</a>
</li>
class LeftbarController {
constructor() {}
hasPermission(name) {
return user[name];
}
}
如果用户拥有名为“FOO”的权限,它基本上会显示
。
现在,同时我的主体
组件对用户也是可见的,并且其中存在一个输入字段,因此每当我在该字段中写入内容时,也会调用另一个组件中存在的hasPermission
方法
那么这里的问题是什么呢?为什么作用域的行为是这样的?我不确定我是否理解您所遇到的问题,您能否详细说明意外的行为,并从
主体组件中添加代码?还有,为什么您的haspowmission
方法没有返回它应该返回的布尔值?实际问题是,每当任何组件的模型(此)中的任何内容发生变化时,任何其他组件中存在的ngIf表达式也会再次得到求值。是的,AngularJS的摘要循环就是这样工作的,任何更改都会触发对所有渲染组件的重新检查。我不知道。谢谢那么,我能做些什么来避免这种情况呢?如果我使用一次性绑定运算符(::),我没有足够的信息来执行此操作,您需要从正在更改的组件、导致更改的组件、不应更改的预期结果以及您得到的更改结果中添加代码。我不确定我是否理解您遇到的问题,您能否详细说明意外行为,并从正文
组件中添加代码?还有,为什么您的haspowmission
方法没有返回它应该返回的布尔值?实际问题是,每当任何组件的模型(此)中的任何内容发生变化时,任何其他组件中存在的ngIf表达式也会再次得到求值。是的,AngularJS的摘要循环就是这样工作的,任何更改都会触发对所有渲染组件的重新检查。我不知道。谢谢那么,我能做些什么来避免这种情况呢?如果我使用一次性绑定运算符(::),我没有足够的信息来执行此操作,您需要添加来自正在更改的组件、导致更改的组件、不应更改的预期结果以及您得到的更改结果的代码。