如何使用指令关闭选项卡
How to close a tab with a directive?
我正试图在一个选项卡上放置一个关闭按钮,然后从DOM中删除该选项卡。。。
我可能没有以正确的角度方式进行操作,因为当我进行操作时,选项卡集会失效,我无法再更改选项卡。
我不想使用ng重复,而是让指令工作时,人们已经手动定义了他们的标签
我创建了一个显示问题的plunker。
angular.module('ui.bootstrap.demo').directive('tabClosable', function() {
return {
restrict: 'A',
require: '^tab',
link: function(scope, element, attributes) {
console.log(element);
var closeButton = angular.element('<button>x</button>');
element.children().eq(0).append(closeButton);
closeButton.bind('click', function() {
console.log("click");
element.remove();
});
scope.$on('$destroy', function() {
console.log('scope destroyed: ');
console.log(scope.$id);
})
}
};
});
我销毁了多个作用域,所以我猜我通过删除元素来减少了太多作用域?
角度版本<1.3存在此问题。每当transcluded指令中的任何dom节点被删除时,它内部的所有作用域都将被销毁。
查看此项以了解更多详细信息:http://fiddle.jshell.net/6qdhX/19/
升级您的angular版本至1.3
如果您仍然想继续使用1.2,可以尝试以下解决方案。1.创建appTransclude
指令。
directive('appTransclude', function() {
"use strict";
return {
"restrict": "A",
"link": function (scope, element, attrs, nullCtrl, transcludeFn) {
var elScope = element.scope();
transcludeFn(elScope, function (clone) {
element.append(clone);
});
}
};
};
- 使用此指令而不是
ng-transclude
相关文章:
- 尝试添加一个选项以使用append进行选择,但没有任何结果
- 在<选择>使用angular ng选项可能使用ng init
- HighMaps:在joinBy选项中使用多值mapData标识符
- 防止已选择的选项 Jquery 使用 MYSQL 自动完成
- Twitter引导选项卡:使用超链接转到特定选项卡
- Angular JS-我可以为选项卡使用单独的控制器来加载窗格吗.这是个好做法吗
- 添加选项以使用 javascript 从 json 文件中选择字段
- 如何使用javascript查找chrome选项卡使用的内存
- 下拉菜单的第一个选项不是一个选项;强制使用其他选项
- AngularJS,如何在选择>选项上使用min=“”来验证表单
- 我可以在选择元素的选项中使用 HTML 标记吗?
- 如何在选择选项时使用 jQuery 显示不同的图像
- 如何在打开之前禁用菜单选项,使用jQuery Selectric
- 更改<选择>的选项并使用 JavaScript 触发事件
- 当选项卡使用数据目标而不是 href 时,引导选项卡不起作用
- Javascript cookie 用于保存用户首选项并使用共享首选项显示内容
- 在选择选项中使用多个变量
- 宽度和长度价格计算器帮助(添加选项)使用JavaScript / jQuery
- 简单的花式盒子 2 键选项 - 如何使用
- 在选择框选项上使用 ng-hide 或 ng-show 选项