詳解使用angularjs的ng-options時如何設置默認值(初始值)
這兩天我用ng-options過程中遇到的初始值為空白的問題,記得去年就遇到過,怎么解決的忘記了,費了一陣子功夫之后解決了,想記下來,方便遇到同樣問題的小伙伴當然還有自己。
1.場景:
就是做一個查詢列表的彈窗,其中有一個條件需要用到下拉菜單,數(shù)據(jù)是用過ajax傳遞過去的。

2.實現(xiàn):
a.html:
<select ng-model="myselect" ng-options="o for o in options"></select>
b.js:
var url = 'xxxxxx';//該url只是舉例,具體的代碼要寫可用的請求地址。
$http.post(url).
success(functoin(data){
$sope.options=data; //賦值給ng-options
});
我當時以為,html寫好,動態(tài)數(shù)據(jù)傳遞給ng-options,這樣下拉菜單就可以用了。運行之后也大致正常,只是下拉菜單是空白的,點擊之后出現(xiàn)后臺傳遞的數(shù)據(jù),就多了第一個的空白項,點擊彈出所有的下拉選項,選擇要選的選項之后,空白項就又消失了。

查看瀏覽器中加載好的html發(fā)現(xiàn)<select>標簽中多了一個非后臺傳遞的option:
<select ng-model="myselect" ng-options="o for o in options"> <option value="?"></option> <option value="0">--請選擇--</option> . . </select>
有點諷刺的是,我去年開發(fā)的一個頁面中的下拉菜單就遇到過這個問題,當時費了老大功夫才解決,但是怎么解決的竟然忘記了,沒辦法,我又試了一通ng-init都不行,依然出現(xiàn)空白的選擇首先展示出來。
想了一下這個value="?" 有時候是“undefind”應該是ng-model="myselect"的初始值,當后端數(shù)據(jù)傳遞過來賦值給options之后(即:$sope.options=data;),angularjs一定是沒有覆蓋select的原始option,即$scope.myselect=undefind,而是在這個option基礎上加上了后端傳遞過來的data數(shù)據(jù),從而導致頁面上下拉菜單中多出一個空白的下拉選項。
按照這個思路,又查了一下stackoverflow中的一些說法,我將js改成從為options賦值時就初始化myselect:
var url = 'xxxxxx';//該url只是舉例,具體的代碼要寫可用的請求地址。
$http.post(url).
success(functoin(data){
$scope.options=data; //賦值給ng-options
$scope.myselect = $scope.options[0];
});
這樣,問題真的解決了。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
angularjs1.X 重構(gòu)controller 的方法小結(jié)
這篇文章主要介紹了angularjs1.X 重構(gòu)controller 的方法小結(jié),非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08
Angular項目如何使用攔截器?httpClient?請求響應處理
這篇文章主要介紹了Angular項目簡單使用攔截器httpClient請求響應處理,目前我的Angular版本是Angular?17.3,版本中實現(xiàn)請求和響應的攔截處理了,這種機制非常適合添加如身份驗證頭、錯誤統(tǒng)一處理、日志記錄等功能,需要的朋友可以參考下2024-06-06
angular4中*ngFor不能對返回來的對象進行循環(huán)的解決方法
今天小編就為大家分享一篇angular4中*ngFor不能對返回來的對象進行循環(huán)的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
詳解Angularjs 如何自定義Img的ng-load 事件
本篇文章主要介紹了詳解Angularjs 如何自定義Img的ng-load 事件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
使用AngularJS編寫多選按鈕選中時觸發(fā)指定方法的指令代碼詳解
最近做項目時遇到了需要用到多選按鈕選中觸發(fā)事件的功能,小編試著手寫一個指令,具體實現(xiàn)代碼大家參考下本文吧2017-07-07

