【问题标题】:Angular directive for radioButton list单选按钮列表的角度指令
【发布时间】:2023-04-10 21:23:01
【问题描述】:

我有一个名为:“程序”的对象列表,

每个程序都有 '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”,您会看到列表中只显示一个节目,所以我想在另一个地方显示它而不显示收音机列表

【问题讨论】:

    标签: angularjs angular-directive


    【解决方案1】:

    在列表中使用过滤器使其更简单:

    看到它在这个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>
    

    希望对您有所帮助。

    【讨论】:

    • 酷!这正是我所需要的。它完美无缺!但我想知道这是否是最好的方法。因为程序列表依赖于页面中的大量输入,而不仅仅是数字,而且这个过滤器在 1 秒内出现了很多次。那么您还有其他提高性能的想法吗?
    • @BrMe 是的,你可以在你的问题中添加这部分吗? (以多个输入为例)。您还可以使用一个全新的列表,如“filteredPrograms”,并在输入上使用“ng-change”触发过滤器。至少会更干净:)!如果你想要一些例子用你的用例更新 plunker,然后把它还给我,我会处理这个。
    • 这里是 plunker 的新示例,我有一个年龄列表,每个年龄都可以选择出生日期(我在示例中只输入数字来选择年龄,但实际上我有一个日期选择器)和程序应仅在年龄介于 min 和 max 之间时显示,并且还具有连接的用户权限数组,其中包含他可以看到的程序的 id,并且程序应仅在用户有权查看时才显示。
    • @BrMe 这个呢? plnkr.co/edit/Cam1b5yC4eYvsi1e9RP6?p=preview 我修改了过滤器以获取对象数组,并在输入上添加了 ng-change。
    • 是的,没关系。它有效,但我希望性能还可以。因为它在 1 秒内发生了很多次..10 倍!
    猜你喜欢
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2014-03-30
    • 2018-02-04
    • 2018-09-23
    • 1970-01-01
    相关资源
    最近更新 更多