각도 1.5.8을 사용하여 일종의 동적 대시 보드를 작성하려고합니다. 마지막 장애물까지 괜찮은 진전을 보였습니다. 실제로 동적 구성 요소를 렌더링합니다.각도 (1.5.8) 동적 구성 요소
나도 추가ui-view
및 프로그래밍 방식으로 위젯의 이름으로 전달하는이
또는, 이것은 내가 추측하고있어 경로가
더 정확, 내가 어떻게 알아 내야,이 옵션을 시도했습니다
동적 위젯을 렌더링합니다.
예를 들어: 내가 추가하고 항목 dashItems
컬렉션에, 그것은 새로운 위젯을 렌더링해야으로는
내가 ngInclude
를 사용하여 템플릿을 교환 할 수 있음을 보았다 (I 제공 한 이름을 기준으로) ,하지만 템플릿과 컨트롤러를 동적으로 주입하는 방법에 대해서는 아직 명확하지 않습니다. (모든 템플릿은 공통 컨트롤러를 공유하지 않을 것이다).
자바 스크립트 :
angular
.module('myDashboard', [])
.config(routesConfig)
.component('dashboard', {
templateUrl: 'dashboard/dashboard.tpl.html',
controller: dashboardController
})
.component('widgetPie', {
template: '<h3>Pie Graph</h3>',
controller: function($log) {
$log.info('widgetPie: loaded');
}
})
.component('widgetLine', {
template: '<h3>Line Graph</h3>',
controller: function($log) {
$log.info('mnWidgetLine: loaded');
}
});
function routesConfig($stateProvider) {
// this is only needed if I go the ui-view route.. I assume
$stateProvider
.state('widgetPie', { component: 'widgetPie'})
.state('widgetLine', { component: 'widgetLine'});
}
function dashboardController($log) {
$log.info('in dashboard');
this.dashItems = [
{ widget:'widgetPie' },
{ widget:'widgetLine' }
];
}
마크 업 (대시 보드/dashboard.tpl.html) :
<div>
<ul>
<li ng-repeat="item in dashItems">
<!--somehow render dynamic-->
<!--<widget-pie></widget-pie>-->
<!--<div ui-view="item.widget"></div>-->
</li>
</ul>
</div>
질문 (들) :
1. I ngInclude
을 조사했지만 o 완벽하게 솔직하게 말해서,이 인스턴스에서 사용하는 방법을 잘 모르겠다. 그리고 이것이 올바른 도구라면, 아니면 내가 잘못 접근하고 있는가?
2. 나는 심지어이의 상태 공급자에 항목을 추가 할 경우, EG I/위젯은 아이의 상태 (따라서 내가 모범 사례로 볼 수 될지 확실하지 않다)
지침을 읽었습니까? –
@LarryTurtis 예, 나는 지시어에 대해 잘 알고 있으며 대부분의 경우 작동하지만 질문에 동적으로 렌더링하는 것과 관련해서는 안됩니다. 아직 어둠 속에 있습니다. –
수도 있습니다. 의도를 오해하지만 [이 게시물] (http://stackoverflow.com/questions/15279244/dynamically-add-directive-in-angularjs)에 설명 된대로 동적으로 지시문을 컴파일하고 페이지에 추가 할 수 있습니까? ? –