У меня есть директива в AngularJS, которая сначала инициализируется по умолчанию при загрузке родительского контроллера.
Директива берет данные с удаленного сервера, используя AJAX, и реализует данные в флажках - каждый флажок получаетключ, если он уже проверен или нет.
При первой загрузке этой страницы (контроллер) и директивы, флажки проверяются правильно.
Когда я перехожу в другую область (контроллер) изатем снова вернитесь к области флажков, ни один из них не проверен.Несмотря на то, что данные снова запрашиваются с удаленного сервера с использованием AJAX (я зарегистрировал их в консоли), эти флажки не проверяются.
Должен ли я повторно инициировать директиву?
Это директива (обратите внимание на отмеченный атрибут):
<checkbox key="{{num}}" selector="{{category.key}}/{{module.key}}" changefunction="togglePermission"
checked="{{permissions[num] && permissions[num].modules.indexOf(category.key+'/'+module.key)!=-1}}"></checkbox>
, и это HTML-файл директивы флажка:
<div class="form-group" ng-class="{'has-danger': errors[selector].length>0}">
<label class="control control-outline control--checkbox {{selector}}">
<div class="input-group">
<span ng-show="title.length>0">{{title}}</span>
<input type="checkbox"
ng-model="this[key][selector]"
ng-disabled="loading"
ng-click="this[changefunction](key, selector)"
ng-checked="checked"
/>
<span class="control__indicator"></span>
</div>
</label>
<small class="text-danger" ng-show="errors[selector].length>0">{{errors[selector]}}</small>
</div>
Краткое объяснение: я отправляю пользовательский ключ и имена селекторовНапример:
$scope.teams = {
level: ""
}
Таким образом, teams
будет ключом, а level
будет селектором
Это js-файл компонента флажка:
app.directive("checkbox", ($rootScope, parseService) => {
return {
templateUrl: "/shared/checkbox/checkbox.html",
scope: true,
link: function($scope, element, attrs) {
$scope.key = parseService.parse(attrs.key);
$scope.selector = parseService.parse(attrs.selector);
$scope.changefunction = parseService.parse(attrs.changefunction);
$scope.checked = parseService.parse(attrs.checked);
}
}
});