【问题标题】:how to make certain options bold in select using angularjs filter and ng-options如何使用 angularjs 过滤器和 ng-options 在选择中使某些选项变粗
【发布时间】:2020-10-19 06:21:45
【问题描述】:

我正在使用 AngularJS ng-options 来填充某些选择元素。我想让一些选项加粗并禁用它们。我正在尝试使用filterng-options 来实现这一点。我能够读取角度 js 控制器端的值,但我无法将它们设为粗体和禁用。我检查了很多答案,但出于某种原因,没有一个对我有用。任何帮助将不胜感激。

HTML Code for the select:

//HTML SELECT
<select class="form-control" id="ObjectId" ng-change="ObjectEventEPCsChange()" ng-model="formdata.ObjectId" ng-options='ObjectId.value as ObjectId.text  for ObjectId in ObjectIds |filter:MyFilter'>
    <option class="dropdown-item" value='' selected> Choose </option>
    <option class="dropdown-item" value="{{ ObjectId.value  }}"> {{ ObjectId.text }} </option>
</select>

ÀngularJS Controller function for filter: //根据条件使一些选项加粗并禁用

$scope.MyFilter = function(item) {
    if(item.text == 'ABCD')
    {
        console.log(item.toString().replace(item.text,"<strong>"+item.text+"</strong>"));
        return item.toString().replace(item.text,"<b>"+item.text+"</b>")
    }
    else
    {
        return item.toString().replace(item.text,"&nbsp;"+item.text);
    }
}

Populating of the options: 我在 nodejs 中有选项,以下是填充到 Select 中的选项类型:

var ObjectTypeOptions  =    [
                                {value:'Option-1',      text:'Option-1'},
                                {value:'Option-2',      text:'Option-2'},
                                {value:'Option-3',      text:'Option-3'},
                                {value:'ABCD',          text:'ABCD'},
                                {value:'Option-4',      text:'Option-4'},
                            ];

var returnData = {'ObjectTypeOptions': ObjectTypeOptions};

callback(returnData);

以下是 Angularjs 方法,它将数据返回到 HTML 并填充选择:

//On load of the page populate the drop-downs
$scope.init = function () {
    $http({
        url: "/populateFields",
        method: "GET"
    }).success(function(response) {
        $scope.ObjectIds    =   response.ObjectTypeOptions;
    }).error(function(error) {
        console.log(error);
    });
};

【问题讨论】:

  • 请发布您操作的数据示例。或者更好的是,用 Plunker 或类似工具编写一些演示
  • 完成,请检查
  • 你使用任何引导主题吗?据我所知,本机浏览器下拉菜单没有粗体样式选项
  • 是的,我正在使用 Bootstrap 4。

标签: javascript html angularjs angularjs-filter angularjs-controller


【解决方案1】:

您可以使用 ng-repeat 和 ng-disabled 来禁用,例如:

function TodoCrtl($scope) {
$scope.ObjectIds = [{
  value: "option1",
  text: "Option 1",
  class: "bold"
},{
  value: "option2",
  text: "Option 2",
  disabled: true
}, {
  value: "option3",
  text: "Option 3"
}];
}
.bold {
 font-weight: bold;
}
<!DOCTYPE html>
<html ng-app>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js"></script>
<meta charset=utf-8 />
<title>ng-click</title>
</head>
<body>
<div ng-controller="TodoCrtl">
<select class="form-control" id="ObjectId" ng-change="ObjectEventEPCsChange()" ng-model="formdata.ObjectId">
    <option class="dropdown-item" value='' selected> Choose </option>
    <option ng-repeat="ObjectId in ObjectIds" class="dropdown-item" ng-class="ObjectId.class" ng-disabled="ObjectId.disabled" value="{{ ObjectId.value  }}"> {{ ObjectId.text }} </option>
</select>
</div>
</body>
</html>

【讨论】:

  • 感谢Bold 这样可以工作,我怎样才能使它们成为disabled?我必须使用过滤器吗?
  • 非常感谢详细的解释和代码。这对我来说非常有用。只是出于好奇,有没有一种方法可以通过使用filter 来完成,这样如果数据来自我无法选择在原点本身添加classdisabled 的数据库然后想知道如何使用filter 选项来做到这一点。
猜你喜欢
  • 2019-01-08
  • 1970-01-01
  • 2016-01-22
  • 2017-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
  • 1970-01-01
相关资源
最近更新 更多