我正在为搜索应用程序构建一个过滤组件,这是我第一次接触 AngularJS。
这是一个 Plunker 或者我到目前为止所得到的,它按照我想要的方式工作:
此实现有两件事让我担心:
我必须将
filters
作为filter
指令的属性传递,才能访问MainController 上的
,肯定有更好的方法来做到这一点吗?我想修改filters
filters
对象,而不必将其作为属性传递。在
filtergroup
指令中定义addFilter
是否正确,还是应该在MainController
上定义?
我已经在 Google 上搜索了一段时间,但似乎找不到替代方案,希望得到任何帮助。
干杯。
最佳答案
AngularJS 的方式是在 html 中显示它的作用。 Html 必须通过不向 JS 隐藏来解释功能。
例如,除非我读了你的 JS,否则我怎么知道这个更新过滤器?因此,除非必要,否则尽量不要做任何事情。如果您制定任何指令,请尝试将功能公开给 html。
<filtergroup type="filter-name" filter-store="filters">
Angularjs 中有很多好的指令。我总是先使用它们。
这就是我要做的,http://plnkr.co/edit/okCp5FZJo1ZR9962uaHT?p=preview
<div class="sidebar">
<p>Filters: {{ filters }}</p>
filter1 <input type="checkbox" ng-model="filters[1]"/><br/>
filter2 <input type="checkbox" ng-model="filters[2]"/><br/>
filter3 <input type="checkbox" ng-model="filters[3]"/><br/>
filter4 <input type="checkbox" ng-model="filters[4]"/><br/>
filter5 <input type="checkbox" ng-model="filters[5]"/><br/>
</div>
“更少的代码,更少的维护”
关于javascript - 指令和 Controller 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21706381/