javascript - 在请求范围的服务中使用 $compile

标签 javascript angularjs angularjs-scope angularjs-ng-click

我可以在服务中使用 $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));
}

此方法假设 $elemangular.element 的实例。如果不是(例如纯 DOM 元素),您需要将其包装 angular.element($elem).scope()

另一种方法是使用 $rootScope.$new() 创建新作用域或简单地使用 $rootScope 本身,但当然使用作用域是有意义的被替换的元素。

关于javascript - 在请求范围的服务中使用 $compile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27840592/

相关文章:

css - 带有故障的自定义选项卡

javascript - AngularJS 中的绑定(bind)问题

javascript - 如何使用 javascript 使用正则表达式 + 和 - ?

javascript - RxJS.Observable 是单子(monad)吗?

Node.js 中的 JavaScript 作用域

javascript - three.js继承模式

angularjs - 如何在angularjs中显示带有小数部分的数字

javascript - 将变量绑定(bind)到 Angular Js 中的已编译元素

javascript - 我们什么时候使用 $scope 什么时候在 AngularJS 中使用 var ?

javascript - ng-bind-html 的变量名称来自 ng-repeat 但变量在其他地方定义