Angular 单选按钮列表指令

Angular directive for radioButton list

我有一个名为的对象列表:'programs'、

每个程序都有 'Min' 和 'Max' 属性

我在此列表上重复以创建所有程序的单选按钮列表,

但是 - 如果某些数字输入不在 min 和

之间,我不想显示程序

此程序的最大值。所以我发送函数来检查程序是否启用:

  <div ng-repeat="p in programs" >
    <div  ng-if="ifEnable(p)">
        <input  type="radio" >
        <label for="{{program.ID}}">{{p.Name}} </label>
    </div>
   </div>

有效。但我想这样做 - 如果只有一个节目被启用,我想在页面的另一个地方而不是广播列表中显示这个节目。

这里是 plunker - 如果您在输入中键入“4”,您会看到列表中只显示一个节目,所以我想在另一个地方显示它而不显示广播列表

在列表上使用过滤器可以使操作更简单:

看到它在这个 plunker

中工作

过滤器:

app.filter('inRange', function() {
  return function(programs, value) {
    var finalList = [];
    angular.forEach(programs, function(program){
      if (value <= program.Max && value >= program.Min){
        console.log("true !");
        finalList.push(program);
      }
    })
    return finalList;
  };
});

其用途:

programs | inRange : num

现在单程序的逻辑

底部 ng-repeat 看起来像这样 :

 <div ng-show="(programs | inRange : num).length > 1" ng-repeat="p in programs | inRange : num" >
    <input  type="radio" >
    <label for="{{program.ID}}">{{p.Name}} - min: {{p.Min}} - max: {{p.Max}}</label>
 </div>

我在顶部添加了另一个条件不同的:

<h1>
  <div ng-show="(programs | inRange : num).length === 1" ng-repeat="p in programs | inRange : num" >
    <input  type="radio" >
    <label for="{{program.ID}}">{{p.Name}} - min: {{p.Min}} - max: {{p.Max}}</label>
  </div>
</h1>

希望对您有所帮助。