Javascript 从DOM中删除指令
我正在使用一个名为的第三方库。idangero.us.swiper.js似乎无法很好地处理DOM中保留的元素指令,因为它假定“slide”元素将是“wrapper”元素的直接子元素 从idangerous.swiper.js:Javascript 从DOM中删除指令,javascript,angularjs,dom,angularjs-directive,swiper,Javascript,Angularjs,Dom,Angularjs Directive,Swiper,我正在使用一个名为的第三方库。idangero.us.swiper.js似乎无法很好地处理DOM中保留的元素指令,因为它假定“slide”元素将是“wrapper”元素的直接子元素 从idangerous.swiper.js: for (var i = 0; i < _this.wrapper.childNodes.length; i++) { if (_this.wrapper.childNodes[i].className) { var _className =
for (var i = 0; i < _this.wrapper.childNodes.length; i++) {
if (_this.wrapper.childNodes[i].className) {
var _className = _this.wrapper.childNodes[i].className;
var _slideClasses = _className.split(/\s+/);
for (var j = 0; j < _slideClasses.length; j++) {
if (_slideClasses[j] === params.slideClass) {
_this.slides.push(_this.wrapper.childNodes[i]);
}
}
}
}
for(var i=0;i<\u this.wrapper.childNodes.length;i++){
if(_this.wrapper.childNodes[i].className){
var\u className=\u this.wrapper.childNodes[i].className;
var\u slidelasses=\u className.split(/\s+/);
对于(var j=0;j<\u slidelasses.length;j++){
if(_slideClass[j]==params.slideClass){
_this.slides.push(_this.wrapper.childNodes[i]);
}
}
}
}
有效的DOM:
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide">
Slide 1
</div>
<div class="swiper-slide">
Slide 2
</div>
</div>
幻灯片1
幻灯片2
无效的DOM:
<div class="swiper-container">
<div class="swiper-wrapper">
<my-custom-slide>
<div class="swiper-slide">
Slide 1
</div>
</my-custom-slide>
<my-custom-slide>
<div class="swiper-slide">
Slide 2
</div>
</my-custom-slide>
</div>
</div>
幻灯片1
幻灯片2
我想创建一个myCustomSlide
指令来减少锅炉板,集中一些css,等等。为此,我似乎需要从DOM中排除我的指令元素,以便实际的“swiper slide”元素将位于\u this.wrapper.childNodes
中。我看了看一张照片。它似乎完全符合我的要求。然而,它似乎已被弃用。所以我不想用它
替换([已弃用!],将在下一个主要版本(即v2.0)中删除)
现在我正在按优先顺序考虑:
我更喜欢第三个选项,这是一种从DOM中删除my custom slide元素的非弃用方式。这是否存在?如果它不存在,有人能解释一下或给我指一下关于为什么不推荐使用替换功能的文档吗?
replace
不推荐使用替换功能,因为为了使它正确运行,有很多簿记工作要做,并且需要考虑一些特殊情况
如果您有一个特定的用例(正如您所做的),并且您知道您的自定义幻灯片没有什么特别之处,您可以手动将其替换为模板。
(如果没有更多细节,我无法确定这是否适合您的情况。)
另一个解决方案可能是使用
restrict:'A'
定义您的指令,该指令可能与前面提到的我的用例重复,并在角度提交中引用了这个SO问题,该问题不支持替换功能:我想我现在只使用普通DOM节点/锅炉板。但是谢谢你的建议和解释。