ng-style不起作用

时间:2015-02-24 04:12:32

标签: css angularjs ionic-framework ionic

我尝试在选择类别后更改颜色,我尝试使用" ng-style"。但它不起作用。

这是我的代码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>

这是我的弹出代码:

<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>

这是我的contoller.js,并显示弹出窗口以选择类别:

 // 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);
};

});
})

我得到错误未定义 - 未定义。 有人可以帮帮我吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

尝试更改代码:

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
        };
    }
})

答案 1 :(得分:0)

在此处查看我对类似问题的回答:ng-style blues 也许你可以试试&#34; style&#34;相反,所以将您的代码更改为:

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

并尝试一下。如果失败了,我会尝试创建一个返回样式字符串的函数(即&#34; 颜色:any-color-goes-here &#34;)并将样式更改为& #34; 风格= colorFunct(selectedColor [$指数])&#34;看看是否有效。

HTH,问候。