У меня есть три флажка:
<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", а затем отобразить только значения.
Вероятно, мой пример ниже несколько похож на то, что вы ищете:
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.
Надеюсь, это поможет.
link
для неизвестной директивы, и функция связи, кажется, пытается мгновенно выполнить итерацию через пустой объект. Почему вы все равно пытаетесь перебрать массив? не будет ли$scope.a.Type
уже массивом, который вы ищете? Например, не могли бы вы сделатьng-repeat="values in $scope.a.Type"
?