javascript - AngularJS如何重新初始化指令?
问题描述
我在 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);
}
}
});
解决方案
推荐阅读
- xml - XSLT 1.0:具有以下兄弟条件的环绕标记
- ionic-framework - 可以用 Ionic 构建 Telegram 客户端吗?
- laravel - 在哪里放置我曾经使用过的额外 Laravel 路线,但我想保留它们仅供参考
- unity3d - 游戏开始时分数不是从0开始的
- r - 如何沿同一数据框中的列分配 R 中数据框的行和
- android - 导航表单选项菜单项时导航到嵌套图时如何返回用户离开的位置?
- r - r plotly中的白色标签垫
- ios - iOS 13 状态栏样式
- c - 在c中通过串口传输时字符\r转换为\n
- spring-boot - 将大量文件加载到 SFTP 问题