Próbuję zbudować rodzaj dynamicznego pulpitu przy użyciu Angular 1.5.8. Zrobiłem przyzwoite postępy aż do ostatecznej przeszkody. Który faktycznie renderuje komponent dynamiczny.Kątowe (1.5.8) komponenty dynamiczne
Próbowałem 2 opcje, albo dodanie ui-view
i programowo przechodzącą w imieniu widget, lub, a to jest droga Zgaduję jest więcej poprawne, muszę dowiedzieć się, w jaki sposób do renderowania dynamicznego widgetu.
Dla przykładu: Jak dołączyć i element do kolekcji dashItems
, powinien uczynić nowy widżet (na podstawie nazwy, jakie przewidziano)
Widziałem, że mogę zamienić z szablonów za pomocą ngInclude
, ale wciąż nie jestem pewien, jak uzyskać szablon i kontroler do dynamicznego wtrysku. (EG wszystkie moje szablony nie będą dzielić wspólnego kontrolera).
JavaScript:
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' }
];
}
Markup (deska rozdzielcza/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>
Pytanie (a):
1. I Zajrzałem do ngInclude
, ale t o bądź całkowicie szczery, nie jestem pewien, jak go użyć w tym przypadku, i JEŚLI to jest właściwe narzędzie do tego, czy podchodzę do tego niepoprawnie?
2. powinienem być nawet dodawanie elementów do dostawcy upoważnione do tego, EG I/mogła widget być postrzegane jako stan dziecka (a więc nie jestem pewien, co będzie postrzegane jako najlepsza praktyka)
Czy czytasz o dyrektywach? –
@LarryTurtis Tak, znam dyrektywy i jak one działają w większości, ale nie w odniesieniu do ich dynamicznego renderowania (tak jak w moim pytaniu, wciąż jestem trochę pogrążony w ciemności –
Mogę być niezrozumienie intencji, ale czy będziesz w stanie dynamicznie kompilować dyrektywy i dodawać je do strony, jak opisano w [tym poście] (http://stackoverflow.com/questions/15279244/dynamically-add-directive-in-angularjs) ? –