У меня возникла ситуация, когда я хочу создать директиву, которая принимает массив элементов и разбивает их на переменное количество столбцов, обертывая их элементами, которые создают столбцы. Потратив часы на часы, пытаясь разобраться в разных вещах, я не могу понять, как это сделать. Вот как я хочу использовать эту директиву:AngularJS: Создание директивы, которая повторяет зашифрованный шаблон
<columnize columnCount="3" collection="items">
<div>{{item.Name}}</div> <!-- this is the repeated part -->
</columnize>
директива будет получать два входа, ColumnCount и коллекции. Директива внутренне берет коллекцию и разбивает ее на вложенный массив с нужным количеством столбцов, каждый из которых содержит элементы для этого столбца. Полученный массив появится что-то вроде этого:
$scope.columns = [
[{Name: "Item1"}, {Name: "Item2"}, {Name: "Item3"}],
[{Name: "Item4"}, {Name: "Item5"}, {Name: "Item6"}],
[{Name: "Item7"}, {Name: "Item8"}]
];
Затем я хочу вывести чанки столбцов с помощью шаблона, похожее на это:
<div class="row-fluid">
<div class="column" ng-repeat="column in columns">
<span ng-repeat="item in column">
<span ng-transclude></span>
</span>
</div>
</div>
проблема состоит в том, что я не могу получить переключение для работы с момента его повторения внутри ngRepeat. Я предполагаю, что мне нужно клонировать содержимое и вставлять их каким-то образом в этот шаблон вручную, но я не могу найти хороших примеров. Я нашел, что это какой вид выглядит как то, что я хочу сделать, только без вложенных ретрансляторов:
Я надеюсь, есть более простой способ сделать это, чем это. Любые идеи, как я могу это сделать?
не могли бы вы создать jsfiddle? – zsong
Я могу, но он просто не работает. Выбрасывает всевозможные ошибки. Я посмотрю, что я могу взломать. – Jason
Я создам один для вас. но вам нужно показать, как реализован 'columnize'. – zsong