2013-03-06 4 views
6

純粋なjavascriptから$ compileを使用する方法はありますか?私は基本的なjavascriptと場所を使用して私は角度を使用していると、このような何かを行う方法を見つけることができません:http://jsfiddle.net/DavidSlavik/bFdcJ/1/DOMにDOMを追加した後にAngularJSコントローラを初期化する

私は$コンパイルを使用する必要があると思うがどこからスコープです。

angular.module('myApp', []); 

function ExpensesCtrl($scope) { 

    // Here are some master functions...  

}  


$(function() { 

    // Here is the Ajax function that returns html from my MVC action processed with Razor 
    // Here I'm not using AngularJS and scopes... 
    var htmlFromAjax = '<div id="mapOrder" ng-controller="sortable"><div ng-repeat="item in SortItems">{{item.Title}}</div></div>'; 
    $('body').append(htmlFromAjax); 

}); 

function sortable($scope, $http, $element) { 

    // Here is the Ajax function that return JSON object. For example it is commented and used static variable SortItems in scope. 
    //$http.get('someUrlWitchReturnsJsonObject') 
    // .success(function (e) { 
    //  $scope.SortItems = e; 
    // }); 

    $scope.SortItems = JSON.parse('[{"Title":"ddddddd","MapId":5,"Order":0},{"Title":"Moje mapa","MapId":3,"Order":2},{"Title":"asdas","MapId":4,"Order":3},{"Title":"asds","MapId":7,"Order":4},{"Title":"Pokus","MapId":8,"Order":5},{"Title":"Hello world!!!","MapId":1,"Order":10}]'); 

答えて

9
angular.bootstrap($("#targetElmForApp")[0], ["myApp"]); 

説明:

angular.bootstrap(rootElementForApp, arrayOfModulesForTheApp) 

最初のパラメータは、あなたがそうでなければng-appディレクティブを使用して何をするのかであるアプリのためのルート要素を設定します。

第2のパラメータは、アプリケーションを定義するモジュールのリストです。これは、通常、アプリケーションが定義されている単一のモジュールです。

だから、私たちがやったことと同じである:

<div id="targetElmForApp" ng-app="myApp"></div> 

を参照してください:この記事から
http://docs.angularjs.org/api/angular.bootstrap
http://docs.angularjs.org/guide/bootstrap

+0

ええ、それは何であります私は欲しい!!!どうもありがとうございました!!! –

+2

私の人生を救った! Tesekkurler dostum! :) –

+0

私はstackoverflow上で無駄な答えを検索して1時間後にこれを見つけました。ありがとうございました! – Aldekein

0

代替方法:AngularJS + JQuery : How to get dynamic content working in angularjs

 angular.element(document).injector().invoke(function ($compile) { 
       var container = $('#some-dom-element'); 
       var scope = angular.element(container).scope(); 
       $compile(container)(scope); 
     }); 
+1

注:これは私のために働いたが、スコープを呼び出さなければならなかった。 –