【发布时间】:2014-10-27 17:08:01
【问题描述】:
我正在尝试将 ng-include 与 ng-init 一起使用,通过仅更改其数据来重用相同的组件。
组件代码(“slider.html”,没有控制器)如下所示:
<div ng-repeat="person in persons">
{{person.name}}
</div>
从主视图来看,我想重用相同的组件来更改“人员”列表,所以在我的视图中:
<!--slider #1 -->
<div ng-init="persons=english" ng-include ="'inc/app/views/widgets/slider.html'"></div>
<!-- slider #2 -->
<div ng-init="persons=german" ng-include ="'inc/app/views/widgets/slider.html'"></div>
在控制器中,我像这样初始化 2 个列表“english”和“german”:
$scope.english = records.filter(function(t){return t.nationality=="english";});
$scope.german = records.filter(function(t){return t.nationality=="german";});
发生的情况是 2 个组件显示相同的数据列表(德语);有没有办法将 2 个不同的集合绑定到组件?
【问题讨论】:
-
看起来像是将滑块小部件创建为自定义指令而不是 ng-include 的好案例,这样您就可以保持范围干净,提供独特的界面,并避免像 @Roberto Linares 指出的问题出来。
-
我最终写了一个简单的指令,它有一个孤立的范围,并以“slider.html”作为模板
标签: javascript angularjs angularjs-scope angularjs-ng-init