AngularJS如何重新初始化指令?

时间:2018-09-30 07:29:37

标签: javascript angularjs directive

我在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);

    }
  }
});

0 个答案:

没有答案