2013-06-03 10 views
8
<html> 
<head> 
    <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js"></script> 
</head> 
<body> 
    <div id="ajax-content-here"> 

    </div> 
</body> 
</html> 

Jestem naprawdę nowy w kanciastym, więc proszę bądź delikatny!Używaj tylko Angular na stronie załadowanej przez ajax

Pomysł jest taki, jak podano powyżej w tytule - ładuję moją stronę z kanciastą biblioteką zawartą w sekcji head. Później ładuję dane (poniżej) do kontenera div używając ajax (jquery).

<div id="angular-test"> 
    <div> 
     <label>Name:</label> 
     <input type="text" ng-model="yourName" placeholder="Enter a name here"> 
     <hr> 
     <h1>Hello {{yourName}}!</h1> 
    </div> 
</div> 

Chciałbym jakoś zainicjować kątowa być aktywny tylko wewnątrz #angular-test pojemnika po żądania ajax jest zakończona. Zakładam, że ma to coś wspólnego z obiektem zasięgu, prawda?

Dzięki!

+0

Powinieneś zacząć od przeczytania tego: http://stackoverflow.com/questions/14994391/how-do-i-think-in-angularjs-if-i-have -a-jquery-background – TheHippo

+0

Czytałem to właściwie, ale w moim przypadku tworzę nową sekcję w wielkim projekcie i chciałbym użyć kątowego właśnie w tej sekcji. Ponieważ nie jest teraz możliwe przepisywanie wszystkiego od zera za pomocą kątowego, które chcę zacząć od małego. To powinno być możliwe, prawda? Nie ma sposobu, aby ktoś wcześniej nie miał tego problemu. – Krabats

+1

Użyj niestandardowych pisemnych dyrektyw lub całego "pakietu routingu", aby użyć pobranego kodu HTML ajax. Wciąż brzmi jak zły pomysł. – TheHippo

Odpowiedz

9

Angular ma inicjalizację (która obejmuje poszukiwanie ng-aplikacji i kompilacji szablonu) po zakończeniu ładowania DOM (w zdarzeniu DOMContentLoaded). Angular nie ma sposobu, aby wiedzieć, że DOM został zmieniony, a aplikacja ng jest dodawana do DOM później po otrzymaniu odpowiedzi AJAX.

Możesz spróbować inicjować bootstrap ręcznie po ostatecznym sfinalizowaniu DOM (czyli w twoim jquery ajax callback, po przypisaniu do innerHTML). W zwrotnego zrobić coś jak następuje:

angular.bootstrap($('#ajax-content-here')); 

Zakładając, że zawartość wewnątrz ajax-content-here odnosi się do pewnego ng-app. Zobacz sekcję inicjalizacji ręcznej pod adresem http://docs.angularjs.org/guide/bootstrap

0
<div ng-app id="angular-test"> 

ng-app część zainicjować kątowe wewnątrz angular-test.

+0

Wątpię, aby został zainicjowany przez Angular, gdy jest on ładowany za pomocą AJAX, chociaż ([demo] (http://plnkr.co/edit/bUYMoRFUjOlRF1VgnDVr?p=preview)). – robertklep

+0

Próbowałem też tego podejścia na początku, ale nie. – Krabats

Powiązane problemy