我正在尝试创建一个"粘性表标题"我需要复制部分transcluded含义的组件。
根据我如何转换内容,它最多只能部分工作:使用$compile
时,表达式会在基础数据发生变化时更新,但ng-repeat
似乎根本不起作用。它甚至不是第一次渲染,更不用说稍后更新了。简单地添加我发现的部分内容似乎根本不起作用:element.append($(transcludedEl).find('.wrapper'));
为了说明我的观点,我使用相同代码的三个版本创建了一个plunkr:http://plnkr.co/edit/xkAkzl8ID3m5Ras3Ww31
有趣的是:
app.directive('stickyPartial', ['$compile', '$timeout', function($compile, $timeout) {
return {
restrict: 'E',
transclude: true,
template: '<div></div>',
link: function(scope, element, attrs, controller, transclude) {
transclude(scope, function(transcludedEl) {
// this is what i want to achieve - not working
// element.append($(transcludedEl).find('.wrapper'));
// neither is this, though it does support expressions
$compile($(transcludedEl).find('.wrapper'))(scope, function(clone) {
element.append(clone);
});
});
}
};
}]);
到目前为止,我已尝试了$compile
,.clone()
和.html()
的多种组合,但无济于事。我既不能从已编译的模板中获取工作的部分DOM树,也不能使用ng-repeat
完整的有用部分HTML源,然后我可以手动编译。
作为最后的手段,我可能会尝试在角度完成后复制DOM(之前似乎有效),然后每次相关模型数据更改时手动重复此过程。如果有另一种方式,想想,我非常想避免这种情况。
答案 0 :(得分:0)
使用https://stackoverflow.com/a/24729270/2029017我找到了compile
符合我想要的解决方案:http://plnkr.co/edit/V4yUbiAD9EAaaJXihziv