Chcę utworzyć dyrektywę, która organizuje dane wyświetlania pogrupowane według daty. Chcę również móc określić dyrektywę, która będzie wyświetlała poszczególne wiersze. W idealnym świecie byłoby to wyglądać mniej więcej tak (ale miłą i ładną)Przekaż dane do elementu z translatorem
Friday, Oct 28
[some directive html]
[some directive html]
[some directive html]
Saturday, Oct 29
[some directive html]
Sunday, Oct 30
[some directive html]
[some directive html]
...
To oczywiście nie działa, więc jeśli masz lepsze podejście proszę mi powiedzieć, ale miałem nadzieję, że będzie w stanie zrobić coś wzdłuż tych linii:
app.directive('dateOrganized', [function(){
return {
template:
'<div>' +
'<div ng-repeat="organizedDate in organizedDate">' +
'<div>{{organizedDate.date | date}}</div>' +
'<div ng-repeat="item in organizedDate.items">' +
'{{rowDirectiveHtml}}' +
'</div>' +
'</div>' +
'</div>',
scope: {
organizedDates: '=',
rowDirectiveHtml: '='
}
...
};
}])
app.directive('itemRow', [function(){
return {
template: '<div>{{item.data}}</div>',
scope: {
item: '='
}
};
}]);
następnie używać go tak:
<div data-organized organized-dates="stuff" row-directive-html="<div item-row item=\"item\" />" />
wiem, że to bardzo brzydki (i nie działa, ale jestem pewien, że mogę dostać pracy z kilka poprawek), więc czym naprawdę jestem sking, czy jest lepszy sposób na zrobienie tego?
Dlaczego chcesz przekazać html w 'row-dyrektywa-html'? Czy to się zmieni? – Subash
Powinieneś zajrzeć do funkcji ['$ transclude'] (https://docs.angularjs.org/api/ng/service/$compile#-link-) - wprowadzonej do kontrolera lub piątego parametru do' link' funkcjonować. Powinieneś także rozważyć przekazanie szablonu (który jest tym, czym jest) jako elementu podrzędnego, a nie jako atrybutu. Ale ogólnie rzecz biorąc, dobra odpowiedź na to pytanie będzie musiała dotknąć wielu koncepcji, dlatego lepiej najpierw zapoznać się z tymi podstawowymi pojęciami. –
Tak, wiersze się zmienią, więc potrzebuję elastyczności. @new dev dzięki za napiwek. Przyjrzę się temu. –