AngularJS, как повторно инициализировать директиву? - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть директива в 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);

    }
  }
});
...