1

I tried to change the color after selecting a category, I try to use the "ng-style". but it does not work.

this my code html :

<div ng-repeat="item in ListExpense" ng-class-odd="'item item-icon-left desc-expense a'" ng-class-even="'item item-icon-left desc-expense b'">
    <!-- this to change color -->
    <i class="icon ion-ios-pricetags" ng-style="{'color': selectedColor[$index]}" ng-click="showPopover($event, $index, item.ExpenseId, item.CategoryId)"></i>

    <div class="col description" ng-click="showEditExpense(item.ExpenseId)">{{ item.Title }}</div>
    <div class="col cost" ng-bind="item.Amount | currency:'':0"></div>
  </div>

this my code for popup :

<div id="popup">
 <ion-scroll style="height: 190px;">
  <label ng-repeat="item in ListCategory" for="{{item.Name}}">
   <input type="radio"
          ng-model="myCategory"
          ng-value="item.CategoryId"
          ng-click="closeInController(item.CategoryId, ItemId, paramDate)"
          id="{{item.CategoryId}}"
          name="category">
   {{item.Name}}
    <br>
 </label>
 </ion-scroll>
 </div>

and this my contoller.js, and show popup to select category :

 // Controller Popover tags expense
.controller('PopOver', function($scope, $ionicPlatform, $ionicPopover, Category, Expense) {
$ionicPlatform.ready(function() {
$scope.myFormCat = {};
$scope.myFormCat.name = "Audit Form";
$scope.myFormCat.submitCategory = function(ExpenseId, event) {
    var theCategory = $scope.myFormCat.Category;
    if (theCategory === undefined) {
        //
    } else {
        var cat = {};
        cat.Name = theCategory;
        cat.Type = 'D';
        Category.add(cat).then(function(res) {
            var lastId = res.insertId;
            Expense.updateCategory(lastId, ExpenseId);
        });
        Category.all('D').then(function(res) {
            $scope.ListCategory = res;
        });

        $scope.myFormCat.Category = '';

        $scope.popover.hide();
    }
};

var d = new Date();
var mm = d.getMonth();
var dd = d.getDate();
var yy = d.getFullYear();


Category.all('D').then(function(res) {
    console.log(res);
    console.log("inilah " + res.length);
    if (res.length > 0) {
        $scope.ListCategory = res;
    } else {

    }
})

 //beware of month is month + 1
Expense.totalPerCategory(mm+1, yy).then(function(res) {
    console.log(res);
    $scope.TagColor = {};
    for (i = 0; i < res.length; i++) { 
        $scope.TagColor[res[i].CategoryId] = {
            color: res[i].BgColor,
            label: res[i].CategoryName
        };
    }
})

$ionicPopover.fromTemplateUrl('templates/popoversss.html', {
scope: $scope,
}).then(function(popover) {
$scope.popover = popover;
});

$scope.showPopover = function($event, index, ExpenseId, CategoryId) {
  console.log(CategoryId);
$scope.myCategory = CategoryId;
$scope.item_index = index;
$scope.ItemId = ExpenseId;
$scope.popover.show($event);// 
}

$scope.closeInController = function(selectedItem, ExpenseId, paramDate, color, cindex) {

  Expense.updateCategory(selectedItem, ExpenseId);
  Expense.getByDate(paramDate).then(function(res) {
    console.log(res);
    $scope.ListExpense = res;
});
  $scope.popover.hide();
  $scope.selectedColor = {};
  $scope.selectedColor[cindex] = color;
  console.log(cindex + ' -- ' + color);
};

});
})

i got error undefined -- undefined. Anyone can help me?

Thanks in advance

pnuts
  • 58,317
  • 11
  • 87
  • 139
afrila gunadi
  • 124
  • 1
  • 4
  • 16

2 Answers2

0

Try to change your code:

Expense.totalPerCategory(mm+1, yy).then(function(res) {
    console.log(res);
    $scope.ListExpense = [];
    for (i = 0; i < res.length; i++) { 
        $scope.ListExpense.push({
            color: res[i].BgColor
        };
    }
})
Bartosz Czerwonka
  • 1,631
  • 1
  • 10
  • 11
0

See my answer to a similar question here: ng-style blues Maybe you could try with "style" instead, so change your code to:

 <i class="icon ion-ios-pricetags" style="color:selectedColor[$index]" ng-click="showPopover($event, $index, item.ExpenseId, item.CategoryId)"></i>

and give it a try. If that fails, I would try to create a function that would return the style string (i.e. "color:whatever-color-goes-here") and change the style to "style=colorFunct(selectedColor[$index])" and see if that works.

HTH, regards.

Community
  • 1
  • 1
Zalakain
  • 597
  • 5
  • 9