我可以在服务中使用 $compile,因为它抛出错误范围不存在。
services.factory('getRegistersrvs', function($http, $compile) {
return {
getRegisterpage: function() {
return $http.get(baseUrl+'signup', {cache: true});
},
replaceTemp: function(response, $elem) {
$elem.replaceWith($compile(response.data));
}
}
});
这里response.data是从ajax http.get获取的html数据。
我需要使用它才能让 ng click 为动态元素工作
最佳答案
您可以使用 scope
方法访问元素范围:
replaceTemp: function(response, $elem) {
var scope = $elem.scope();
$elem.replaceWith($compile(response.data)(scope));
}
此方法假设 $elem
是 angular.element
的实例。如果不是(例如纯 DOM 元素),您需要将其包装 angular.element($elem).scope()
。
另一种方法是使用 $rootScope.$new()
创建新作用域或简单地使用 $rootScope
本身,但当然使用作用域是有意义的被替换的元素。
关于javascript - 在请求范围的服务中使用 $compile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27840592/