角度自定义复选框指令在ng-repeat

时间:2016-09-28 13:27:36

标签: javascript html css angularjs checkbox

我为复选框创建了一个自定义指令,可以在我的应用程序中使用。我已使用以下代码创建了复选框。

JS

angular.module("myApp")
    .component("ngCheckbox", {
       template:
           '<div class="ng-control-checkbox">' +
           '<input id="check" type="checkbox" data-ng-model="$ctrl.checked" class="checkbox">' +
           '<label for="check">'+
           '<span data-ng-bind="$ctrl.label"></span>' +
           '</label>' +
           '</div>' +
           '',   

        bindings: {
            label: '=?',
            checked: '='
        },
        controller: function () {
            var $ctrl = this;
        }
    });

CSS

  .ng-checkbox label{
      cursor: pointer;
      margin-left: 20px;
  }
  .ng-checkbox label:before {
     content: "\e911";
     cursor: pointer;
     color: #84919A;
  }
  .checkbox {
    display: none;
  }
  .checkbox:checked + label:before {
   content: "\e910";
    cursor: pointer;
    color: $color_forest_green;
  }

HTML

      <div data-ng-repeat="notification in notificationList" >
        <ng-checkbox data-checked="notification.selected"></ng-checkbox>
      <div>
  • 我使用CSS ::之前更改内容。我不想为此写任何JS。
  • 我无法更改HTML结构,因为我必须使用特定于应用程序的图标作为复选框的CSS内容

问题

因为我正在使用标签的 来复制复选框的 id ,但我无法在ng-repeat中使用此复选框指令。我希望得到一个解决方案,因为我坚持这个。

提前致谢。

1 个答案:

答案 0 :(得分:0)

拥有一个动态ID,每当有一个复选框的实例时自动递增,或者将其基于当前的ngRepeat迭代,并将其传递给指令。

或者,您可以构造HTML,以便标签隐式链接到输入而根本没有ID。在输入周围包装标签应该这样做。