2012-07-03 3 views
16

컨트롤러라는 두 개의 페이지가 있습니다 : 하나는 '앱'목록을 관리하는 페이지이고 다른 하나는 Div 요소의 innerHTML에 새로운 Angular 템플릿을 배치하는 페이지입니다.페이지 안의 AngularJS 템플릿을 동적으로로드하십시오.

<div ng-controller="appList"></div> 
<div ng-controller="appPane"> Dynamic content should be loaded here! </div> 

내가 표준 {{식}} 바인딩을 사용하여 시도했다, 그러나 HTML 작동하지 않습니다, 나는 또한 NG 바인드-HTML-안전 지침을 시도 (앱의에 innerHTML을 바인딩 요청의 반환)하지만 컨트롤러는이 새 코드 내에서 실행되지 않습니다.

Binding을 사용하면 Angular가 해당 html의 내용을 다시 각도 분석 응용 프로그램으로 사용하지 않는 것 같습니다. 동적 컨텐트를 파싱하는 방법에 대한 아이디어가 있습니까?

+1

동일한 앱에 대해 '앱'별개의 각도 앱 (각 앱에 'ng-app' 선언이 있습니까?) 또는 다른 컨트롤러/뷰가 있습니까? 컨트롤러/뷰가 다른 경우 appList를 내비게이션으로 사용하고 '$ routeProviders' (http://docs.angularjs.org/api/ng.$routeProvider)를 설정하여 여러보기를 관리 할 수 ​​있습니다. –

+0

아마 내가 시도했던 것보다 더 나은 해결책이지만 Angular에 아직 익숙하지 않으므로 사용해 보겠습니다. 감사. – Zoey

답변

4

합니다 (AngularUI 프로젝트)를 uiRouter 모듈을 살펴보십시오. 그것은 노선과 꽤 비슷하지만 상태를 중첩 할 수있는 것과 같은 다른 장점을 가진 상태의 개념을 추가합니다. 예를 들면 : 당신이 /mystate/something로 이동하여 매개 변수로 그 "무언가"($stateParams 참조)를 사용할 수 있습니다 때마다

$stateProvider 
    .state('myState', { 
     url: '/mystate', 
     templateUrl: '...', 
     controller: 'MyCtrl' 
    }) 
    .state('myState.substate', { 
     url: '/{substate}', 
     templateUrl: '...', 
     controller: 'MySubCtrl' 
    }); 

MySubCtrl이 활성화됩니다. 상태를 원하는 수준으로 중첩시킬 수 있습니다.

+0

정말 유용하게 들리 네요! Angal의 초기 개발에서 나온 답이었습니다. 존재하지 않았던 것 같습니다. 다른 사람들은 이것이 사실이 아니어야한다고 말하면서 자유롭게 의견을 말하지만, 이제는 이것이 정답이라고 생각합니다. 수락 됨. – Zoey

+1

이러한 것들 (AngularJS 생태계)은 그들이 진화하는 방식으로 행복해졌습니다. –

+0

기록을 위해, 나는 내 자신의 프로젝트에서이 솔루션을 시도했지만 매우 유용합니다. 존재하지 않는 경로를 탐색하여 오류가 발생하는 등의 몇 가지 문제가 있지만 중도 도큐멘트에 숨겨져있는 경로가 처리 될 수있는 경로가 존재하지 않을 때이를 감지 할 수있는 방법입니다. 일반적으로 시나리오를 사용하는 사람은 경로를 사용하려고하는 모든 사람에게이 솔루션을 권하고 있으며 공식 Route 공급자를 Angular에서 건너 뛰는 것이 좋습니다.이 경로는 훨씬 강력합니다. – Zoey

25

$ compile 서비스는 현재 범위와 함께 다시 컴파일하려는 요소를 제공받을 때 내가 찾고있는 것으로 나타납니다. 내 소스에서

예 :이 사람이 내 문제가 발생하는 데 도움이

var appPane = $('#AppPane');//JQuery request for the app pane element. 
appPane.html(data);//The dynamically loaded data 
$compile(appPane.contents())($scope);//Tells Angular to recompile the contents of the app pane. 

, 나는 희망한다.

6

각도 배열의 $routes 및 ngView를 확인하십시오.

여기에 아주 기본적인 예제 :

http://jsfiddle.net/pXpja/3/

+0

이것은 '공식적인'대안이지만, 원래의 문제처럼 컨트롤러의 계층 구조가 필요한 상황에서는 현재 작동하지 않습니다. – Zoey

관련 문제