【问题标题】:remove first blank item from dropdown list and replace with default select option text从下拉列表中删除第一个空白项并替换为默认选择选项文本
【发布时间】:2018-05-01 19:50:10
【问题描述】:

在我的项目中,有很多下拉列表。这些下拉列表的项目是使用 api 服务从数据库加载的。因此,每当加载该空白选项时,它首先出现在所有项目中。如何删除第一个空白选项并替换为默认文本选择。

控制器

$scope.EnclosureModel = "";

loadEnclosure();
function loadEnclosure()
{
    $scope.loading = true;
    var promise = ngservice.getClosureType();
    promise.then(function (resp) {
        $scope.EnclosureList = resp.data;
        $scope.loading = false;
    });
}

api调用通过角度服务方法消耗

服务

this.getClosureType = function () {
    var res = $http.get("/api/Surge/GetEnclosure");
    return res;
};

这是我的观点:

Enclosure type 
<a href="#" onclick="return false;" rel="EnclosureType">
    <img src="img/question.jpg" Border="0" style="vertical-align:middle; width:16px;" />
</a>

<br />

<select ID="Drp_EnclosureType_Option1" AutoPostBack="True" Class="form-control form-control-small" ng-model="EnclosureModel" ng-options="p for p in EnclosureList" ng-change="getConf();getNoCurr();getMaxCur();getMScr();getLoc();getIec();getmCOV();getsysV();getIncidents();getRemSignals();getalr();getRejc();getCount();">
    <option Value ="" selected="selected">--Select--</option>
</select>

项目已从数据库中正确加载,但每次先打开空白选项。在检查了这么多帖子后,我尝试了很多事情。 最后一个我试过了

$scope.EnclosureModel={"selected":null}

它完美地删除了第一个空白,但问题是其他下拉列表将根据此“ENCLOSURE”下拉列表的项目选择而改变。因此,每当我尝试使用上面的其他下拉列表时,都会更改并具有空项目。

我知道角度模型的行为是这样的,因为在未选择任何项目时未定义值。

但是如何从 api 服务加载数据的选项中删除第一个空白。

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    我在angularjs 中填充下拉菜单时遇到了类似的问题。我想出的解决方案是在选择框中将第一个选项作为禁用的描述(参见下面的代码 sn-p):

    <div class="row">
        <div class="col-sm-6 col-md-5 col-lg-3">
            <label>Incident Type:</label>
            <select id="incidentTypeDropdown" class="select-style select-style-required" ng-model="causeData.incidentType" ng-change="incidentTypeOnChange(causeData.incidentType)">
                <option value="" disabled selected>Select Incident Type...</option>
                <option ng-repeat="incident in incidentTypeList" value="{{incident.incidentTypeID}}">
                    {{incident.type}}
                </option>
            </select>
        </div>
    </div>
    

    这段代码sn-p中可能对你有帮助的相关部分是第一个选项行:

    &lt;option value="" disabled selected&gt;Select Incident Type...&lt;/option&gt;

    因此,此选项始终处于禁用状态,并作为用户描述我希望他们执行的操作“选择事件类型...”,然后这是网页上的结果:

    我希望这种方法可以解决您的问题。

    【讨论】:

    • 感谢您的帮助。但是,当我按照您的建议更改答案时。它在加载之前显示。之后,同样的问题出现在空值上。 ng-options 是否可以像您上面建议的那样将默认选项放在首位
    • @user7411584 很抱歉回复晚了,您能否找到解决问题的方法?至于您的回复,我不完全知道您是否可以向 ng-options 添加默认选项,但是,在研究了一下之后,我注意到您可以选择下拉值,以便可以将默认选项附加到您的开头的列表是描述吗?然后只需在加载后在列表中选择该项目? stackoverflow.com/questions/17329495/…
    猜你喜欢
    • 2021-05-24
    • 2020-10-18
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    相关资源
    最近更新 更多