2016-01-14 2 views
0

J'ai une div avec répétition de collection sur laquelle j'applique une classe ng ng-class="$index%2 == '0' ? 'blue' : 'yellow'", j'applique également une directive ionique d'attente comme ng-class="{'selected': column.selected}"? Je veux quand la ligne est sélectionnée la couleur rouge de la classe sélectionnée devrait obtenir appliquée.Dispositif problème est si j'écris la deuxième classe ng d'abord, la couleur rouge est appliquée, mais la première ng classe devient invalid.Is il un moyen d'obtenir à la fois de cetteDirective Ionic on Hold

<div class="row brd rowclass" collection-repeat="column in tasklist_records track by $index" on-hold="onHoldFlag == true?'':onHold(column,$index)" ng-class="{'selected': column.selected}" ng-class="{white:$index%2 == 0,grey:$index%2 == 1,firstrow:$first}" item-height="50px" ng-click="goToAccountDetailScreen(column,$index)"> 

Répondre

1

en ng-class vous pouvez insérer Expression angulaire: pourquoi ne pas utiliser une fonction (définie sur la portée) qui analyse la condition que vous souhaitez et renvoie une chaîne contenant les noms de classe appropriés (espace délimité)?

Voici un exemple:

angular.module('ionicApp', ['ionic']) 
 

 
.controller('MyCtrl', function($scope) { 
 
    console.log("MyCtrl"); 
 
    $scope.tasklist_records = [{ 
 
    id: 0, 
 
    onHoldFlag: false 
 
    }, { 
 
    id: 1, 
 
    onHoldFlag: false 
 
    }, { 
 
    id: 2, 
 
    onHoldFlag: false, 
 
    selected: true 
 
    }, { 
 
    id: 3, 
 
    onHoldFlag: false 
 
    }, { 
 
    id: 4, 
 
    onHoldFlag: false 
 
    }, { 
 
    id: 5, 
 
    onHoldFlag: false 
 
    }, { 
 
    id: 6, 
 
    onHoldFlag: false 
 
    }]; 
 

 
    $scope.customClass = function(column, $index) { 
 
    if (!column) return; 
 
    var _class = ""; 
 
    if (column.id==0) _class += "firstrow "; 
 
    if ($index % 2 == 0) _class += "grey "; 
 
    if ($index % 2 == 1) _class += "white "; 
 
    if (column.selected) _class += "selected "; 
 
    console.log("customClass", column,_class); 
 
    return _class; 
 
    } 
 
    
 
    $scope.onHold = function(column, $index) { 
 
    console.log("onHold", column, $index); 
 
    column.onHoldFlag = !column.onHoldFlag; 
 
    } 
 

 
    $scope.goToAccountDetailScreen = function(column, $index) { 
 
    console.log("goToAccountDetailScreen", column, $index); 
 
    } 
 

 
});
.selected { 
 
    color: red; 
 
} 
 
.white { 
 
    background-color:white; 
 
} 
 
.grey { 
 
    background-color:grey; 
 
} 
 
.firstrow { 
 
    color: blue; 
 
}
<html ng-app="ionicApp"> 
 

 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 
 
    <title>Ionic List can swipe</title> 
 
    <link href="//code.ionicframework.com/nightly/css/ionic.css" rel="stylesheet"> 
 
    <script src="//code.ionicframework.com/nightly/js/ionic.bundle.js"></script> 
 
</head> 
 

 
<body ng-controller="MyCtrl"> 
 
    <ion-header-bar class="bar-positive"> 
 
    <h1 class="title">Ionic List</h1> 
 
    </ion-header-bar> 
 

 
    <ion-content> 
 
    <ion-list> 
 
     <div class="row brd rowclass" collection-repeat="column in tasklist_records track by $index" on-hold="onHoldFlag == true?'':onHold(column,$index)" ng-class="customClass(column, $index)" item-height="50px" ng-click="goToAccountDetailScreen(column,$index)">{{column.id}} - {{column.onHoldFlag}} - {{column.selected}} 
 
     </div> 
 
    </ion-list> 
 
    </ion-content> 
 

 
</body> 
 

 
</html>