将计算的 class 添加到 angular 中的 HTML 元素
Add a calculated class to an HTML element in angular
我在页面上渲染了一堆用户图标。我想根据他们的 ID 给他们一个 class。
示例用户对象
{ id: 1234, name: "foo" }
HTML元素
<div ng-repeat="user in userList" class="something-{{ user.id % 10 + 1 }}">
</div>
所以 classes 会像 "something-1", "something-2", ... 基于用户 ID。
以上代码无效。没有 class 出现在元素上。正确的做法是什么?
请尝试 ng-init
。在这种情况下,您的 HTML 将是
<div ng-repeat="user in userList" ng-init="myId = (user.id % 10) + 1;" class="something-{{ myId }}">
</div>
使用 ng-class
<div ng-repeat="user in userList" data-ng-class="{class1:user.id===1234}"></div>
或者你可以使用函数
<div ng-repeat="user in userList" class="{{getClassName(user)}}">
</div>
函数可以是
$scope.getClassName = function(user){
return "class-" + (user.id * 10)+1;
}
我会在控制器中构建类,以保持视图整洁,整洁,干净的 JS 操作更适合控制器。
users.forEach(function (user) {
user.klass = 'something-' + (user.id % 10 + 1);
});
<div ng-repeat="user in users" class="{{::user.klass}}">
<!-- :: added. kill the watchers -->
我在页面上渲染了一堆用户图标。我想根据他们的 ID 给他们一个 class。
示例用户对象
{ id: 1234, name: "foo" }
HTML元素
<div ng-repeat="user in userList" class="something-{{ user.id % 10 + 1 }}">
</div>
所以 classes 会像 "something-1", "something-2", ... 基于用户 ID。
以上代码无效。没有 class 出现在元素上。正确的做法是什么?
请尝试 ng-init
。在这种情况下,您的 HTML 将是
<div ng-repeat="user in userList" ng-init="myId = (user.id % 10) + 1;" class="something-{{ myId }}">
</div>
使用 ng-class
<div ng-repeat="user in userList" data-ng-class="{class1:user.id===1234}"></div>
或者你可以使用函数
<div ng-repeat="user in userList" class="{{getClassName(user)}}">
</div>
函数可以是
$scope.getClassName = function(user){
return "class-" + (user.id * 10)+1;
}
我会在控制器中构建类,以保持视图整洁,整洁,干净的 JS 操作更适合控制器。
users.forEach(function (user) {
user.klass = 'something-' + (user.id % 10 + 1);
});
<div ng-repeat="user in users" class="{{::user.klass}}">
<!-- :: added. kill the watchers -->