我有一个克隆其元素的指令,通过$ compile(myClone)(范围)传递克隆;并将其附加到DOM。
如果原始元素已转换内容,例如:This is some content {{withVariable}}
如何在未插入angularjs表达式的情况下克隆它,以便克隆元素具有表达式(因此与原始表达式具有相同的动态内容),而不是克隆时解析的值?
如果我使用ng-bind指令,它可以按需运行。
离。 This is some content <span ng-bind="withVariable"></span>
答案 0 :(得分:1)
好的,我在我的指令上找到了使用transclude: true
的解决方案。
然后我进入了链接功能:
link: function (scope, element, attrs , uiScrollpoint, transclude ){
transclude(scope, function(clone, scope){
// stash the un-interpolated innerHTML
element[0].srcHTML = clone[0].innerHTML;
element.append($compile(clone)(scope));
});
}
当我克隆元素时,我会在编译之前检索srcHTML:
var myClone = element.clone();
if(element[0].srcHTML){
myClone[0].innerHTML = element[0].srcHTML;
}
$compile(myClone)(scope);
它似乎有效,但我确实看到了如果原始元素的源被JS DOM操作函数动态修改的限制,srcHTML将不会保持同步。我认为这是一个非常罕见的情况。
也许有更好的方法可以做到这一点?如果可以在克隆时获得未插入的HTML,而不仅仅是在翻译时,那将是最好的。