Javascript 如何摆脱下拉菜单选项/下拉菜单中的空白-angular JS?
我正试图找出如何摆脱显示在下拉菜单中的空白。菜单中不应该有一个“全部”选项。我去掉了这个选项(可能不是正确的选择),有时候刷新时,我可以看到菜单上有一个空白,而其他时候它只会在控制台上给我一个错误。我不知道为什么会有这种变化 最终,我必须放弃所有选项(正确的方法),并删除它留下的空白 这是我的js:Javascript 如何摆脱下拉菜单选项/下拉菜单中的空白-angular JS?,javascript,html,angularjs,Javascript,Html,Angularjs,我正试图找出如何摆脱显示在下拉菜单中的空白。菜单中不应该有一个“全部”选项。我去掉了这个选项(可能不是正确的选择),有时候刷新时,我可以看到菜单上有一个空白,而其他时候它只会在控制台上给我一个错误。我不知道为什么会有这种变化 最终,我必须放弃所有选项(正确的方法),并删除它留下的空白 这是我的js: define(["app", "lodash", "service/reference", "directives/control/topic-input" ], function (app) {
define(["app",
"lodash",
"service/reference",
"directives/control/topic-input"
], function (app) {
return app.directive('roleSelect', ['Reference', function (Reference) {
return {
restrict: 'A',
scope: {
selectedRole: '=',
selectedTopics: '=?',
presetRole: '=?',
topicNameOnly: '@?',
notUsePresets:'@?'
},
link: function ($scope, elem, attr) {
$scope.talentRoles = [];
$scope.topicNameOnly = ($scope.topicNameOnly === 'true');
$scope.notUsePresets = ($scope.notUsePresets === 'true');
if(!$scope.presetRole) {
$scope.presetRole = {id: -1, code: "ALL", description: "All"};
} // this is where the 'All' option comes from, so I just got rid of this if statement. Not sure if this is the right thing to do
if(!$scope.notUsePresets) {
$scope.talentRoles.push($scope.presetRole);
}
Reference.getTalentRoles($scope, function (response) {
$scope.talentRoles = response.concat($scope.talentRoles);
for(var i = 0;i<$scope.talentRoles.length;i++){
if($scope.selectedRole && $scope.selectedRole.description == $scope.talentRoles[i].description){
$scope.selectedRole = $scope.talentRoles[i];
}
}
});
$scope.showTopics = function(){
return attr.selectedTopics
}
$scope.roleChanged = function(role) {
$scope.selectedTopics = [];
};
},
templateUrl: '/directives/control/role-select.html'
};
}])
});
define([“应用程序”,
“洛达斯”,
“服务/参考”,
“指令/控件/主题输入”
],功能(应用程序){
返回应用程序指令('roleSelect',['Reference',函数(Reference){
返回{
限制:“A”,
范围:{
selectedRole:“=”,
所选主题:“=?”,
预设角色:“=?”,
仅主题名称:“@?”,
notUsePresets:“@?”
},
链接:函数($scope、elem、attr){
$scope.talentRoles=[];
$scope.topicNameOnly=($scope.topicNameOnly==='true');
$scope.notUsePresets=($scope.notUsePresets=='true');
如果(!$scope.presetRole){
$scope.presetRole={id:-1,代码:“全部”,说明:“全部”};
}//这就是“All”选项的来源,所以我刚刚去掉了if语句。不确定这样做是否正确
如果(!$scope.notUsePresets){
$scope.talentRoles.push($scope.presetRole);
}
Reference.getTalentRoles($scope,function(response){
$scope.talentRoles=response.concat($scope.talentRoles);
对于(var i=0;i我认为如果删除if
,也应该从$scope初始化中删除预设角色:'=?'
此外,您还需要检查对presetRole
的任何其他引用,因为即使删除if
,presetRole
似乎仍会添加到talentRoles
告诉我它是否有效。很酷。没问题。您可以单击检查以指定答案是否正确,这样其他人也可以知道修复方法;)
<select class="form-control" required
id="roleSelector"
ng-options="talentRole as talentRole.description for talentRole in talentRoles track by talentRole.id" id="talentRole"
ng-change="roleChanged(role)"
ng-model="selectedRole">
<option ng-if="true" selected="true" value="" class="select-placeholder"><ln code="directive.role.select.tooltip" args=""></ln></option>
</select>
<div topic-input
name-only="topicNameOnly"
class="row-spacing"
ng-show="showTopics()"
ng-model="selectedTopics"
talent-role-id="selectedRole.id"></div>