Javascript 如何手动将内部指令转移到两个位置?
我需要访问ng repeat的结果,我发现我可以使用transclude函数并手工编译。但问题是,它不适用于2个位置和具有ng repeat的元素。我的代码如下所示:Javascript 如何手动将内部指令转移到两个位置?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我需要访问ng repeat的结果,我发现我可以使用transclude函数并手工编译。但问题是,它不适用于2个位置和具有ng repeat的元素。我的代码如下所示: return { restrict: 'E', require: '?ngModel', template: 'HTML' transclude: true, replace: true, link: function(scope, element, attrs, ngModelCt
return {
restrict: 'E',
require: '?ngModel',
template: 'HTML'
transclude: true,
replace: true,
link: function(scope, element, attrs, ngModelCtrl, $transclude) {
var caption = element.find('.caption');
var dropdown = element.find('.dropdown-menu');
$transclude(function(clone) {
//var clone_clone = clone.addClass('ng-hide');
//$compile(clone.contents())(scope.$new()).appendTo(caption);
$compile(clone)(scope.$new()).appendTo(dropdown);
$compile(clone)(scope.$new()).appendTo(caption);
});
}
};
当我只运行一个compile,但在第二个compile时抛出异常时,它就可以工作了,我尝试克隆并使用带有transclude的内容:“element”。我该怎么做?我需要有与ng transclude ng translcude相同的行为。不要使用ng repeat,因为在链接中我有一个元素,而不是元素列表
更新:用法:
所以我需要调用transclude两次:
$transclude(function(clone) {
$compile(clone)(scope.$new()).appendTo(caption);
});
$transclude(function(clone) {
$compile(clone)(scope.$new()).appendTo(dropdown);
});
你的HTML是什么样子的,你能显示正在使用的指令,包括转置的内容吗?
$transclude(function(clone) {
$compile(clone)(scope.$new()).appendTo(caption);
});
$transclude(function(clone) {
$compile(clone)(scope.$new()).appendTo(dropdown);
});