我正在开发一个大型企业应用程序,我们的应用程序使用jQuery,我们希望专注于使用angular,我们无法立即删除所有jQuery代码,因此我们必须处理已存在的内容系统。阻止我们使用角度的最常见事情之一是存在以下代码
$.ajax('/HtmlController', {...}).then(function(html) {
$('someElement').replaceWith(html);
});
我们暂时无法将其删除,因为它会破坏系统中的某些内容。相反,我们希望一步一步顺利地转向角度。我们需要做的第一步是在返回的html中应用angular的绑定并用jQuery替换。换句话说,我们需要将以下标记放入html
变量
...
1 + 2 = {{ 1 + 2 }}
...
我们需要它通过角度来执行,但不幸的是角度没有看到新注入的html,怎么可能让角度看到它?
答案 0 :(得分:0)
您必须编译元素并将其与范围链接。假设你有一个有角度的页面,这样的东西就可以了:
$.ajax('/HtmlController', {...}).then(function(html) {
var dom = $('someElement');
var el = angular.element(dom), scope = el.scope(),
$compile = el.injector().get('$compile');
scope.$apply(function(){
dom.replaceWith($compile($(html))(scope));
});
});
以下是一个简单示例:http://plnkr.co/edit/mRhsZV5DahfCjMWkP2My?p=preview