ng-class - 在对象中找到一个值
ng-class - finding a value inside object
我有一个看起来像这样的对象:
$scope.things = [
{
name: 'Bob!',
short_name: 'bob',
info: 'something something'
},
{
name: 'Steve',
short_name: 'steve',
info: 'something something something'
},
];
我像这样遍历它们并添加一个 ng-click:
<div ng-repeat="thing in things" ng-click="addThing(thing.name, thing.short_name, thing_info" ng-class="thingClass(thing.name)">content goes here</div>
ng-click="addThing()"
基本上是将值组合起来并将它们添加到对象中。
单击时,它应该添加 class selected
- 当我不使用多维对象时,它工作得很好,很漂亮,因为它只是在里面寻找 name
对象/数组(此时,我认为它是一个对象......但当时,它是一个数组)
我不知道如何做与此等效的事情...
$scope.thingClass= function(name) {
if($scope.thingSelected.indexOf(name) != -1) {
return 'selected';
}
};
...与现在的对象一样。我试图从这里改编一些我通过 google 找到的答案,例如:
$scope.teamClass = function(name) {
var found = $filter('filter')($scope.thingSelected, {id: name}, true);
if (found.length) {
return 'selected';
}
};
...但没有快乐。
任何人都可以指出/推动我正确的方向吗?
您可以简单地将事物对象传递给 thingClass
:
... ng-class="thingClass(thing)" ...
并实现 thingClass
如下:
$scope.thingClass= function(thing) {
return $scope.thingSelected.indexOf(thing) >= 0 ? 'selected' : '';
}
也许您也应该将此技术应用于 addThing
:
... ng-click="addThing(thing)" ...
$scope.addThing = function(thing) {
if ($scope.thingSelected.indexOf(thing) < 0)
$scope.thingSelected.push(thing);
}
但是,与其在数组中跟踪选定的事物,不如在每个事物中引入 selected
属性 更容易:
$scope.addThing = function(thing) {
thing.selected = true;
}
$scope.thingClass= function(thing) {
return thing.selected ? 'selected' : '';
}
我有一个看起来像这样的对象:
$scope.things = [
{
name: 'Bob!',
short_name: 'bob',
info: 'something something'
},
{
name: 'Steve',
short_name: 'steve',
info: 'something something something'
},
];
我像这样遍历它们并添加一个 ng-click:
<div ng-repeat="thing in things" ng-click="addThing(thing.name, thing.short_name, thing_info" ng-class="thingClass(thing.name)">content goes here</div>
ng-click="addThing()"
基本上是将值组合起来并将它们添加到对象中。
单击时,它应该添加 class selected
- 当我不使用多维对象时,它工作得很好,很漂亮,因为它只是在里面寻找 name
对象/数组(此时,我认为它是一个对象......但当时,它是一个数组)
我不知道如何做与此等效的事情...
$scope.thingClass= function(name) {
if($scope.thingSelected.indexOf(name) != -1) {
return 'selected';
}
};
...与现在的对象一样。我试图从这里改编一些我通过 google 找到的答案,例如:
$scope.teamClass = function(name) {
var found = $filter('filter')($scope.thingSelected, {id: name}, true);
if (found.length) {
return 'selected';
}
};
...但没有快乐。
任何人都可以指出/推动我正确的方向吗?
您可以简单地将事物对象传递给 thingClass
:
... ng-class="thingClass(thing)" ...
并实现 thingClass
如下:
$scope.thingClass= function(thing) {
return $scope.thingSelected.indexOf(thing) >= 0 ? 'selected' : '';
}
也许您也应该将此技术应用于 addThing
:
... ng-click="addThing(thing)" ...
$scope.addThing = function(thing) {
if ($scope.thingSelected.indexOf(thing) < 0)
$scope.thingSelected.push(thing);
}
但是,与其在数组中跟踪选定的事物,不如在每个事物中引入 selected
属性 更容易:
$scope.addThing = function(thing) {
thing.selected = true;
}
$scope.thingClass= function(thing) {
return thing.selected ? 'selected' : '';
}