gpt4 book ai didi

angularjs - 类型错误 : Cannot read property 'childNodes' of undefined in AngularJS directive

转载 作者:行者123 更新时间:2023-12-04 02:50:32 24 4
gpt4 key购买 nike

我正在像这样在 AngularJS 中制作指令“Tab Slide Out”

angular.module('myApp',[]).directive('tabSlideOut', ["$window", "$document", "$timeout", function($window, $document, $timeout) {
// default settings of a regular tab slide out
var defaultSettings = {
speed: 300,
action: 'click',
tabLocation: 'left',
top: '200px',
left: '50px',
fixedPosition: true,
positioning: 'absolute',
onLoadSlideOut: false
}

// handler element
var handler = angular.element('<a class="handler btn">{{title}}</a>');

// panel element aka container
var container = angular.element('<div ng-transclude></div>');

return {
restrict: 'E',
transclude: true,
replace: true,
template: '<div class="tab-slide-out"></div>',
scope: {
options: "=",
status: "=",
title: "@"
},
compile: function(template) {

// append handler to template
template.append(handler);

// append container to template
template.append(container);

console.log(template);
// return linking function
return function(scope, element, attrs) {
...
}
}

};

如果我只使用一个,一切正常。但是,如果我使用 2 个或更多,则会抛出此错误TypeError:无法读取未定义的属性“childNodes”

这是plunker链接 Demo

最佳答案

发生的事情是,当您添加另一个 slider 时,它使用与第一个 slider 相同的 handlercontainer 引用。如果元素当前存在于 DOM 中,append 将实际移动该元素,因此它已从第一个指令中删除。

您需要为每个实例创建新元素(或克隆它们)。 http://plnkr.co/edit/CC2bCXdaoAo7HjQ0oAu0?p=preview

关于angularjs - 类型错误 : Cannot read property 'childNodes' of undefined in AngularJS directive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17876213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com