, , :
/
function ctrl($scope) {
$scope.Playlists = [
{ name: 'Playlist 1', tracks: [ 'Track 1', 'Track 2', ..., 'Track n'] },
{ name: 'Playlist 2', tracks: [ 'Track 1', 'Track 2', ..., 'Track n'] },
...
{ name: 'Playlist n', tracks: [ 'Track 1', 'Track 2', ..., 'Track n'] }
];
}
:
<div ng-controller="ctrl">
<div ng-repeat="playlist in Playlists">
<div> {{ playlist.name }} </div>
<div ng-repeat="track in playlist.tracks">
{{ track }}
</div>
</div>
</div>
[]
DOM, . DOM . . jQuery, DOM. jsFiddle
var myApp = angular.module('myApp',[]);
myApp.directive('playlist', function() {
return {
restrict: 'A',
scope: false,
link: {
pre: function(scope, element) {
$('.Track').each(function(index, ele) {
scope.tracks.push($(ele).attr('data-track-name'));
});
console.log(scope.tracks);
},
post: function(scope, element) {
}
},
controller: function($scope, $element) {
$scope.tracks = [];
}
}
});
[edit # 2] . , - . jsFiddle
:
<div ng-app="myApp">
<script type="text/ng-template" id="tpl.html">
<div>My playlist controls</div>
<div ng-repeat="track in tracks">
{{ track }}
</div>
</script>
<div playlist>
<div class="Track" data-track-name="Pompeii">Pompeii</div>
<div class="Track" data-track-name="Weight of living">Weight of living</div>
</div>
</div>
var myApp = angular.module('myApp',[]);
myApp.directive('playlist', function($compile, $templateCache) {
var extractData = function(scope) {
$('.Track').each(function(index, ele) {
scope.tracks.push($(ele).attr('data-track-name'));
});
}
return {
replace: true,
restrict: 'A',
compile: function(ele, attr, ctrl) {
return {
pre: function preLink(scope, ele, attr, ctrl) {
extractData(scope);
},
post: function postLink(scope, ele, attr, ctrl) {
ele.html($templateCache.get("tpl.html"));
$compile(ele.contents())(scope);
}
}
},
controller: function($scope, $element) {
$scope.tracks = [];
}
}
});