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