angular - invoke()on exising element undefined

时间:2015-06-07 12:45:09

标签: ajax angularjs

我有一个div(id:dest),其中使用查询通过ajax加载内容。 我需要使用angular编译该div的内容。

以下是通过ajax加载的内容:              {{MYVAR}}     

我试着这样做:

var app = angular.module("myapp", []);
app.controller("myctrl", function($scope){
  $scope.myvar = "hello world!";
});

$("#dest").attr("data-ng-app", "myapp");
$("#dest").attr("data-ng-controller", "myctrl");

console.log(angular.element($("#dest")).size()); //always returns '1'

angular.element($("#dest")).injector().invoke(function($compile) {
    var scope = angular.element($("#dest")).scope();
    $compile($("#dest"))(scope);
});

我确定在执行该代码时,$("#dest")存在于dom中但是 angular.element($("#dest"))。injector()始终未定义。

我也试着等了15秒:

setTimeout(function(){
    angular.element($("#dest")).injector().invoke(function($compile) {
        var scope = angular.element($("#dest")).scope();
        $compile($("#dest"))(scope);
    });
}, 15000);

但问题仍然存在。

PS。

我无法直接与ajax请求或响应进行交互,并且在页面加载时存在div(带有id dest)。

1 个答案:

答案 0 :(得分:0)

您是否尝试使用$(document).ready()或角度等效的代码包装该代码:

angular.element(document).ready(function () {
  angular.element($("#dest")).injector().invoke(function($compile) {
    var scope = angular.element($("#dest")).scope();
    $compile($("#dest"))(scope);
  });
});

工作jsfiddle