как перебрать объект чекбокс

0

У меня есть три флажка:

<label>Type:</label>
 <label>one</label>
    <input type="checkbox" name="type" ng-model="a.Type[0]"/>

  <label>two</label>
    <input type="checkbox" name="type" ng-model="a.Type[1]"/>

  <label>three</label>
    <input type="checkbox" name="type" ng-model="a.Type[2]"/>

Эти флажки хранятся в бэкэнд как массив строки.

Моя ценность отображается в: -

<li  class="list-group-item"><strong>Type</strong>: <span ng-repeat="values in myArray">{{values}}</span></li>

Мой директивный код: -

    (function () {
    'use strict';
    angular.module('myApp.components')
        .directive('abc', abc);

    abc.$inject = ['$http', '$timeout', 'ApiServices'];

    function abc($http, $timeout, ApiServices) {
        return {
            restrict: 'EA',
            scope: {

            },

            link: function (scope, el, attrs) {
                scope.a = {};

                $('#abc').on('hide.bs.modal', function () {
                    scope.active = false;
                });
                $('#abc').on('shown.bs.modal', function () {
                    scope.active = true;

                    scope.myArray = [];

                  scope.iterate = function () {
                   for (var key in scope.a.Type) {
                      if (scope.a.Type.hasOwnProperty(key)) {
                        scope.myArray.push(scope.a.Type[key]);
                      }
                   }
                  };

                  scope.iterate();
            },
            templateUrl: ''
        };
    }

})();

Здесь, что я пытаюсь сделать is-, я хочу выполнить итерацию с помощью флажков "Тип" и нажал значения в "myArray", а затем отобразить только значения.

  • 0
    не совсем понятно, что вы пытаетесь сделать здесь. Вы показываете функцию link для неизвестной директивы, и функция связи, кажется, пытается мгновенно выполнить итерацию через пустой объект. Почему вы все равно пытаетесь перебрать массив? не будет ли $scope.a.Type уже массивом, который вы ищете? Например, не могли бы вы сделать ng-repeat="values in $scope.a.Type" ?
  • 0
    scope.a.Type в массиве строк в бэкэнде, но когда я сохраняю значения, они сохраняются как объекты, где ключ - это номер индекса, а значение - это имя; - один, два, три. Итак, я делаю итерацию по этому объекту и получаю значения, затем помещаю их в «myArray» и затем отображаю значения массива.
Показать ещё 3 комментария
Теги:
angularjs-ng-repeat

1 ответ

0

Вероятно, мой пример ниже несколько похож на то, что вы ищете:

HTML:

  <span>Select Type:</span>
  <div ng-repeat="type in myArray">
    <input type="checkbox" ng-model="type.value" /> {{type.type}}
  </div>

  <span>Selected Types:</span>
  <div ng-repeat="type in myArray">
    <span ng-show="type.value"> {{type.type}}</span>
  </div>

JS:

  $scope.a = {};
  $scope.a.Type = ["One","Two","Three"]; // your string array

  $scope.myArray = [];
  $scope.a.Type.forEach(function(item){
    $scope.myArray.push({type: item, value: false }); // create new array to make it selectable via checkbox
  });

Наверное, теперь вам больше не нужна ваша директива. Итерация и фильтрация выполняется в самом HTML.

Надеюсь, это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню