How can I build this layout with AngularJS -
i'm using ng-repeater list items on page. issue need special html containers around 2 items , don't. here's result need 6 item repeater (pseudo output):
<section class="ab"> <group class="a"> <item>item 1</item> </group> <group class="b"> <item>item 2</item> <item>item 3</item> </group> </section> <section class="ba"> <group class="b"> <item>item 4</item> <item>item 5</item> </group> <group class="a"> <item>item 6</item> </group> </section> here rules i'm having follow:
- the
<section>class refers layout of groups inside - group ever has 1 item
- group b likes have 2 items can deal 1 in case run out of items
from research of i've done on web think need custom directive. i'm unfamiliar angularjs keep banging head on 1 i've come sof help. how can current setup using repeater? or need else?
edit
here's actual finished product need like. again example 6 items it's dynamic there 100+.
<div class="coupon-grid"> <div class="ls"> <div class="row"> <div class="large col col-50"> <div class="coupon"> <div class="bg" style="background:url(../img/img1.png) no-repeat; background-size:cover; background-position: center center;"></div> <div class="mask purple"></div> <div class="content"> <div class="logo"> <img src="../img/brand1.png" alt="" /> </div> <p class="miles">2.1 miles</p> <p class="num-coupons">3 coupons</p> </div> </div> </div> <div class="col col-50"> <div class="small row"> <div class="coupon"> <div class="bg" style="background:url(../img/img2.png) no-repeat; background-size:cover; background-position:center center;"></div> <div class="mask green"></div> <div class="content"> <div class="logo"> <img src="../img/brand1.png" alt="" /> </div> <p class="miles">2.1 miles</p> <p class="num-coupons">3 coupons</p> </div> </div> </div> <div class="small row"> <div class="coupon"> <div class="bg" style="background:url(../img/img3.png) no-repeat; background-size:cover; background-position:center center;"></div> <div class="mask orange"></div> <div class="content"> <div class="logo"> <img src="../img/brand1.png" alt="" /> </div> <p class="miles">2.1 miles</p> <p class="num-coupons">3 coupons</p> </div> </div> </div> </div> </div> </div> <div class="sl"> <div class="row"> <div class="col col-50"> <div class="small row"> <div class="coupon"> <div class="bg" style="background:url(../img/img2.png) no-repeat; background-size:cover; background-position:center center;"></div> <div class="mask green"></div> <div class="content"> <div class="logo"> <img src="../img/brand1.png" alt="" /> </div> <p class="miles">2.1 miles</p> <p class="num-coupons">3 coupons</p> </div> </div> </div> <div class="small row"> <div class="coupon"> <div class="bg" style="background:url(../img/img3.png) no-repeat; background-size:cover; background-position:center center;"></div> <div class="mask orange"></div> <div class="content"> <div class="logo"> <img src="../img/brand1.png" alt="" /> </div> <p class="miles">2.1 miles</p> <p class="num-coupons">3 coupons</p> </div> </div> </div> </div> <div class="large col col-50"> <div class="coupon"> <div class="bg" style="background:url(../img/img1.png) no-repeat; background-size:cover; background-position: center center;"></div> <div class="mask purple"></div> <div class="content"> <div class="logo"> <img src="../img/brand1.png" alt="" /> </div> <p class="miles">2.1 miles</p> <p class="num-coupons">3 coupons</p> </div> </div> </div> </div> </div> </div>
you can use angular's ng-if directive.
so can this:
<div ng-if="item.b.length == 1"> use layout </div> i hope makes sense. perhaps post rest of code, including ng-repeater. way might able fit in ng-if directive.
edit:
here simple example of ng-if directive.
index.html
<html ng-app="bam" ng-controller="bamcontroller"> <head> </head> <body> <div ng-repeat="member in members"> <div ng-if="member.name != 'dennis'"> well, hello, {{member.name}}. </div> </div> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.js"></script> <script src="js/app.js"></script> </body> </html> app.js
var bam = angular.module('bam', []); bam.controller('bamcontroller', ['$scope', function($scope){ $scope.members = [ { name: "will", age: 32 }, { name: "dennis", age: 30 } ]; }]);
Comments
Post a Comment