我有一个用于桌面的元素的AngularJS:
<nav ng-controller="MainNavController" class="navbar navbar-default" role="navigation">
问题是,对于移动设备,我需要实现一个画布外导航,其中整个身体都移了过来,并且导航器似乎从右侧滑入。
为此,我认为可以使用jQuery.clone()来完成此操作,而不是在初始html有效负载中复制页面上的整个导航。
但是,当我这样做时,我失去了$ scope上下文。我的复制锚中的ng-click函数没有被触发。
我将这些项目复制到指令中,并尝试调用scope。$ apply(),但它不起作用。
$(".prenav > *").clone().appendTo($(".off-canvas__nav"));
scope.$apply();
从我的阅读看来,我需要以某种方式在此新的html上调用$ compile,但是我不确定在当前设置中如何/何时执行此操作。
任何帮助,将不胜感激。
-斯科特
最佳答案
您首先需要$compile它,否则Angular会将其视为一堆木头:
scope.$apply(function(){
var newNav = $(".prenav > *").clone();
$compile(newNav)(scope);
newNav.appendTo($(".off-canvas__nav"));
}
关于javascript - AngularJS-克隆的HTML失去了$ scope,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28034294/