Ng-class 并比较来自不同 firebase 数组的值
Ng-class and comparing values from different firebase arrays
希望有人能指出我正确的方向。我目前对如何实现以下目标感到非常困惑 -
我正在尝试在 ng-repeat 中使用 ng-class 有条件地应用 bootstrap 背景色 class.
非常简单,当我输入一个静态值进行比较时效果很好(在本例中为“25”)-
在控制器中。数据来自 Firebase。数据结构如下 -
"myDatabase": { "someNumber":"12" }
"myOtherDatabase": { "compNumber":"30" }
var ref = new Firebase(my-first-firebase-url);
$scope.data = $firebase(ref);
var ref2 = new Firebase(my-second-firebase-url);
$scope.data2 =$firebase(ref2);
在视图中 -
<div ng-repeat="item in data" ng-class="{'bg-info' : item.someNumber > 25}"> {{item.someNumber}} </div>
不过,我想从我正在使用单独的 $watch 函数更新的单独的 firebase 对象中动态提取比较值。显然以下方法不起作用,但我怎样才能达到预期的结果...
<div ng-repeat="item in data" ng-class="{'bg-info' : item.someNumber > data2.compNumber}"> {{item.someNumber}} </div>
非常感谢任何帮助!!
我会在 $scope 中创建一个函数来生成要插入到 HTML 中的 类。我总是喜欢在 JS 部分有这种逻辑,在这种特定情况下特别重要,因为你需要先将你的值从字符串转换为数字。
这是一个小例子:
angular.module('webapp', [])
.controller('dummyCtrl', ['$scope', '$timeout', function($scope, $timeout) {
$scope.data = [{
value: '1'
},
{
value: '40'
},
{
value: '20'
},
{
value: '10'
},
{
value: '50'
},
{
value: '20'
}
];
$scope.threshold = 30;
$scope.getClass = function(item) {
return {
'bg-info': Number(item.value) > $scope.threshold
};
};
}]);
.bg-info {
background-color: red;
}
<!DOCTYPE html>
<html ng-app="webapp">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.9/angular.min.js"></script>
</head>
<body ng-app="webapp">
<div ng-controller="dummyCtrl">
<div ng-repeat="item in data" ng-class="getClass(item)"> {{item.value}}</div>
</div>
</body>
</html>
希望有人能指出我正确的方向。我目前对如何实现以下目标感到非常困惑 -
我正在尝试在 ng-repeat 中使用 ng-class 有条件地应用 bootstrap 背景色 class.
非常简单,当我输入一个静态值进行比较时效果很好(在本例中为“25”)-
在控制器中。数据来自 Firebase。数据结构如下 -
"myDatabase": { "someNumber":"12" }
"myOtherDatabase": { "compNumber":"30" }
var ref = new Firebase(my-first-firebase-url);
$scope.data = $firebase(ref);
var ref2 = new Firebase(my-second-firebase-url);
$scope.data2 =$firebase(ref2);
在视图中 -
<div ng-repeat="item in data" ng-class="{'bg-info' : item.someNumber > 25}"> {{item.someNumber}} </div>
不过,我想从我正在使用单独的 $watch 函数更新的单独的 firebase 对象中动态提取比较值。显然以下方法不起作用,但我怎样才能达到预期的结果...
<div ng-repeat="item in data" ng-class="{'bg-info' : item.someNumber > data2.compNumber}"> {{item.someNumber}} </div>
非常感谢任何帮助!!
我会在 $scope 中创建一个函数来生成要插入到 HTML 中的 类。我总是喜欢在 JS 部分有这种逻辑,在这种特定情况下特别重要,因为你需要先将你的值从字符串转换为数字。
这是一个小例子:
angular.module('webapp', [])
.controller('dummyCtrl', ['$scope', '$timeout', function($scope, $timeout) {
$scope.data = [{
value: '1'
},
{
value: '40'
},
{
value: '20'
},
{
value: '10'
},
{
value: '50'
},
{
value: '20'
}
];
$scope.threshold = 30;
$scope.getClass = function(item) {
return {
'bg-info': Number(item.value) > $scope.threshold
};
};
}]);
.bg-info {
background-color: red;
}
<!DOCTYPE html>
<html ng-app="webapp">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.9/angular.min.js"></script>
</head>
<body ng-app="webapp">
<div ng-controller="dummyCtrl">
<div ng-repeat="item in data" ng-class="getClass(item)"> {{item.value}}</div>
</div>
</body>
</html>