2016-03-29 44 views
0

Dinamik HTML içeriğini AJAX ile yüklemeye çalışıyorum, daha sonra derleyin, çünkü angularJS class numaralı köşeli yönergeleri içeriyor.

// Class 
var AngularHelper = (function() { 
    var AngularHelper = function() { }; 
    var defaultApplicationName = "MyApp"; 
    /** 
    * Compile : Compile html with the rootScope of an application 
    * and replace the content of a target element with the compiled html 
    * @$targetDom : The dom in which the compiled html should be placed 
    * @htmlToCompile : The html to compile using angular 
    * @applicationName : (Optionnal) The name of the application (use the default one if empty) 
    */ 
    AngularHelper.Compile = function ($targetDom, htmlToCompile, applicationName) { 
     var $injector = angular.injector(["ng", applicationName || defaultApplicationName]); 
     $injector.invoke(["$compile", "$rootScope", function ($compile, $rootScope) { 
      //Get the scope of the target, use the rootScope if it does not exists 
      var $scope = $targetDom.html(htmlToCompile).scope(); 
      $compile($targetDom)($scope || $rootScope); 
      $rootScope.$digest(); 
     }]); 
    } 

    return AngularHelper; 
})(); 

// jQuery 
$(document).ready(function(){ 
    $.get("http://fuiba.com/test/index.html", function(data) { 
    $("#result").html(data); 
    AngularHelper.Compile($("#result"), data); 
    }); 
}); 

// Angular 
angular.module('MyApp',[]).controller('AppCtrl', function ($scope) { 
    /**/ 
}); 

Ama olsun bu hata (see this codepen):

$targetDom.html(...).scope is not a function 
+1

neden bir öğenin üzerine belirtilen html yüklemek için 'ng-de kapsayacak direktifini kullanmıyorsun? –

cevap

1

Kullanım angular.element($targetDom).scope(); yerine $targetDom.html(htmlToCompile).scope();