Angularjs 在页面上多次使用同一控制器的最佳实践是什么
当您使用Angularjs 在页面上多次使用同一控制器的最佳实践是什么,angularjs,Angularjs,当您使用ng controller将控制器分配给DOM上的元素时,它只在该元素内部工作。例如: <section ng-controller="ExampleCtrl as example"> <h1>Example Controller Works Here</h1> {{example.item}} </section> <section> <h1>But Not Here</h1>
ng controller
将控制器分配给DOM上的元素时,它只在该元素内部工作。例如:
<section ng-controller="ExampleCtrl as example">
<h1>Example Controller Works Here</h1>
{{example.item}}
</section>
<section>
<h1>But Not Here</h1>
{{example.item}} <!-- Nothing -->
</section>
app.directive('exampleDirective', function(){
return {
...
controller: 'ExampleCtrl',
controllerAs: 'example'
};
});
<section>
<div example-directive>
<h1>Example Controller Works Here</h1>
{{example.item}}
</div>
</section>
<section>
<h1>And Example Controller Works Here Too</h1>
{{example.item}}
</section>
示例控制器在这里工作
{{example.item}
但不是在这里
{{example.item}
但是,如果将控制器分配给某个指令,则该控制器将在使用该指令的页面上的任何位置工作。例如:
<section ng-controller="ExampleCtrl as example">
<h1>Example Controller Works Here</h1>
{{example.item}}
</section>
<section>
<h1>But Not Here</h1>
{{example.item}} <!-- Nothing -->
</section>
app.directive('exampleDirective', function(){
return {
...
controller: 'ExampleCtrl',
controllerAs: 'example'
};
});
<section>
<div example-directive>
<h1>Example Controller Works Here</h1>
{{example.item}}
</div>
</section>
<section>
<h1>And Example Controller Works Here Too</h1>
{{example.item}}
</section>
app.directive('exampleDirective',function(){
返回{
...
控制器:“ExampleCtrl”,
controllerAs:“示例”
};
});
示例控制器在这里工作
{{example.item}
示例控制器也在这里工作
{{example.item}
我想知道我是否在指令中使用了控制器,并且需要在页面的不同部分访问它,仅仅依赖该指令可以吗,还是再次声明它更好
<section>
<div example-directive>
...
</section>
<section ng-controller="ExampleCtrl as example">
...
</section>
...
...
另外,如果我再次声明,是否会导致同一控制器的重叠功能出现问题
我不是问是什么让代码更干净或更容易阅读。我理解,如果我删除指令,页面上其他元素的功能会有被破坏的危险,以及这是如何脱离Angular的髓质设计的。我想知道,从严格的功能角度来看,这两种方法都有危险。一般来说,最好保持指令自包含,而不是通过控制器泄漏功能。拥有一个具有支持多个组件(例如指令和页面模板)功能的控制器也不是一个好做法。您的示例过于笼统,无法给出具体的解决方案,但如果您发现您需要指令在指令之外提供的某些功能,这就是代码气味。对于仅位于两个
元素之一上的控制器,有没有什么原因使它不能移动到包装这两个部分的元素?我没有泄露指令的功能。我就是这么做的。我有一些非常相似的项目,仅为该功能重用控制器对我的代码来说是有意义的。我想知道这种泄漏是否正常。我可以包装整个区域并对其应用控制器,然后从指令中删除控制器分配。但我宁愿把它分配给指令。这有意义吗?没有,没有。这不是angular正在做的事情,这是您选择实现angular提供的功能的方式,但是这个选择不是一个好主意。同样,如果没有更具体的代码,这只是猜测,但是很多样式指南都警告不要考虑这种混合问题。很明显,该功能在指令之外泄漏。如果不是,你就不能使用它。因此,这是发生在美国的事情。我理解把事情模块化和分开。然而,在某些情况下,重用代码和控制器是有意义的。我不想把这变成一场关于我的代码是否干净的辩论。我提供的示例不是我的代码。这些都是例子。我想问的是,是否可以不再呼叫控制器,或者是否需要再次呼叫控制器。如果我再打一次电话可能会引起问题。