Saya telah mencari Google dan tidak dapat menemukan apa-apa tentang ini.
Saya punya kode ini.
<select ng-model="somethingHere"
ng-options="option.value as option.name for option in options"
></select>
Dengan beberapa data seperti ini
options = [{
name: 'Something Cool',
value: 'something-cool-value'
}, {
name: 'Something Else',
value: 'something-else-value'
}];
Dan hasilnya adalah seperti ini.
<select ng-model="somethingHere"
ng-options="option.value as option.name for option in options"
class="ng-pristine ng-valid">
<option value="?" selected="selected"></option>
<option value="0">Something Cool</option>
<option value="1">Something Else</option>
</select>
Bagaimana mungkin untuk menetapkan opsi pertama dalam data sebagai nilai default sehingga Anda akan mendapatkan hasil seperti ini.
<select ng-model="somethingHere" ....>
<option value="0" selected="selected">Something Cool</option>
<option value="1">Something Else</option>
</select>
javascript
angularjs
html-select
iConnor
sumber
sumber
a **single** hard-coded <option> element ... can be nested into the <select> element.
Opsi tidak dapat menjadi bagian dari markup.Jawaban:
Anda cukup menggunakan ng-init seperti ini
sumber
Jika Anda ingin memastikan
$scope.somethingHere
nilai Anda tidak ditimpa ketika tampilan Anda diinisialisasi, Anda ingin menyatukan (somethingHere = somethingHere || options[0].value
) nilai dalam ng-init Anda seperti:sumber
options
kekosongan? Seperti dalam haloptions
data berasal dari sumber eksternal.ng-init="somethingHere= somethingHere || 'Select one' "
Saya mencoba seperti ini. tapi itu tidak berhasil. apa yang salah dalam kode sayaCoba ini:
HTML
Javascript
Plunker di sini .
Jika Anda benar-benar ingin mengatur nilai yang akan terikat pada model, maka ubah
ng-options
atribut menjadidan Javascript ke
Plunker lain di sini mempertimbangkan hal di atas.
sumber
Hanya satu jawaban oleh Srivathsa Harish Venkataramana yang menyebutkan
track by
yang memang solusi untuk ini!Berikut ini adalah contoh bersama dengan Plunker (tautan di bawah) tentang cara menggunakan
track by
di pilihng-options
:Jika
selectedCity
didefinisikan pada ruang lingkup sudut, dan memilikiid
properti dengan nilai yang sama dengan yangid
adacity
dicities
daftar, maka akan dipilih secara otomatis saat memuat.Lihat dokumentasi sumber untuk detail lebih lanjut: https://code.angularjs.org/1.3.15/docs/api/ng/directive/select
sumber
Saya pikir, setelah dimasukkannya 'track by', Anda dapat menggunakannya dalam opsi-ng untuk mendapatkan apa yang Anda inginkan, seperti yang berikut ini
Cara melakukannya lebih baik karena ketika Anda ingin mengganti daftar string dengan daftar objek, Anda hanya akan mengubahnya
di mana somethingHere adalah objek dengan nama properti dan id, tentu saja. Harap dicatat, 'as' tidak digunakan dengan cara ini untuk mengekspresikan opsi-ng, karena itu hanya akan menetapkan nilai dan Anda tidak akan dapat mengubahnya ketika Anda menggunakan trek dengan
sumber
Jawaban yang diterima digunakan
ng-init
, tetapi dokumen mengatakan untuk menghindari ng-init jika memungkinkan.Anda juga dapat menggunakan
ng-repeat
sebagai ganting-options
untuk opsi Anda. Denganng-repeat
, Anda bisa menggunakannyang-selected
bersamang-repeat
properti khusus. yaitu $ index, $ odd, $ even untuk membuat pekerjaan ini tanpa coding.$first
adalah salah satu sifat khusus ng-repeat.---------------------- EDIT ----------------
Meskipun ini berfungsi, saya lebih suka @ mik-t jawab ketika Anda tahu nilai apa yang harus dipilih, https://stackoverflow.com/a/29564802/454252 , yang menggunakan
track-by
danng-options
tanpa menggunakanng-init
ataung-repeat
.Jawaban ini hanya boleh digunakan ketika Anda harus memilih item pertama tanpa mengetahui nilai apa yang harus dipilih. misalnya, saya menggunakan ini untuk penyelesaian otomatis yang mengharuskan untuk memilih item PERTAMA setiap saat.
sumber
ng-options
lebih cepat dan lebih dioptimalkan daripadang-repeat
.<select>
model ditugaskan melaluiselect as
bagian dari ekspresi pemahaman”, “mengurangi konsumsi memori dengan tidak menciptakan ruang lingkup baru untuk setiap instance yang diulang "," meningkatkan kecepatan render dengan menciptakan opsi dalamdocumentFragment
alih - alih secara individual "Solusi saya untuk ini adalah menggunakan html ke hardcode opsi default saya. Seperti itu:
Dalam HAML:
Dalam HTML:
Saya ingin opsi default saya untuk mengembalikan semua nilai dari api saya, itu sebabnya saya memiliki nilai kosong. Maafkan juga haml saya. Saya tahu ini bukan jawaban langsung untuk pertanyaan OP, tetapi orang-orang menemukan ini di Google. Semoga ini bisa membantu orang lain.
sumber
Gunakan kode di bawah ini untuk mengisi opsi yang dipilih dari model Anda.
sumber
Bergantung pada berapa banyak opsi yang Anda miliki, Anda bisa meletakkan nilai-nilai Anda dalam sebuah array dan mengisi secara otomatis opsi-opsi Anda seperti ini
sumber
Dalam kasus saya, saya perlu memasukkan nilai awal hanya untuk memberi tahu pengguna untuk memilih opsi, jadi, saya suka kode di bawah ini:
Ketika saya mencoba opsi dengan nilai! = Dari string kosong (nol) opsi diganti dengan sudut, tetapi, ketika menempatkan opsi seperti itu (dengan nilai nol), pilih apear dengan opsi ini.
Maaf dengan bahasa Inggris saya yang buruk dan saya harap saya membantu dalam hal ini.
sumber
Menggunakan
select
denganngOptions
dan mengatur nilai default:Lihat dokumentasi ngOptions untuk lebih banyak
ngOptions
contoh penggunaan.plnkr.co
Dokumentasi resmi tentang
SELECT
elemenHTMLdengan pengikatan data sudut.Mengikat
select
ke nilai non-string melaluingModel
parsing / pemformatan:plnkr.co
Contoh lain:
jsfiddle
sumber
Ini berhasil untuk saya.
sumber
Dalam kasus saya sejak default bervariasi dari kasus ke kasus dalam formulir. Saya menambahkan atribut khusus di tag pilih.
dalam arahan saya membuat skrip yang memeriksa nilai dan ketika sudut mengisinya dalam menetapkan opsi dengan nilai yang dipilih.
})
baru saja menerjemahkan ini dari coffescript on the fly setidaknya es itu benar jika tidak lubang.
Ini bukan cara paling sederhana tetapi menyelesaikannya ketika nilainya bervariasi
sumber
Menanggapi jawaban Ben Lesh , harus ada garis ini
dari pada
Itu adalah,
sumber
Cukup gunakan
ng-selected="true"
sebagai berikut:sumber
Saya akan mengatur model di controller. Kemudian pilih akan default ke nilai itu. Mis: html:
Pengontrol sudut (menggunakan sumber daya):
sumber
Ini bekerja untuk saya
sumber
ng-init
karena Anda sedang mengatur Model.Jika Anda menggunakan
ng-options
untuk membuat Anda drop down daripadaoption
memiliki nilai yang sama dengan ng-modal dipilih secara default. Perhatikan contohnya:Jadi opsi memiliki nilai yang sama
list.key
danselectedItem
, dipilih secara default.sumber
Saya membutuhkan "Tolong Pilih" default untuk tidak dipilih. Saya juga harus dapat mengatur opsi yang dipilih secara kondisional.
Saya mencapai ini dengan cara sederhana berikut: Kode JS: // Balikkan 2 ini untuk menguji default yang dipilih atau tidak ada default dengan default "Silakan Pilih" teks //$scope.defaultOption = 0; $ scope.defaultOption = {key: '3', value: 'Option 3'};
HTML:
Saya harap ini membantu orang lain yang memiliki persyaratan serupa.
"Silakan Pilih" dicapai melalui jawaban Joffrey Outtier di sini .
sumber
Jika Anda memiliki sesuatu alih-alih hanya init bagian tanggal, Anda dapat menggunakannya
ng-init()
dengan mendeklarasikannya di controller Anda, dan menggunakannya di bagian atas HTML Anda. Fungsi ini akan berfungsi seperti konstruktor untuk pengontrol Anda, dan Anda dapat menginisialisasi variabel Anda di sana.sumber
sumber
coba ini di pengontrol sudut Anda ...
$ somethingHere = {name: 'Something Cool'};
Anda dapat menetapkan nilai, tetapi Anda menggunakan tipe yang kompleks dan sudut akan mencari kunci / nilai untuk diatur dalam tampilan Anda.
Dan, jika tidak berhasil, coba ini: ng-options = "option.value sebagai option.name untuk opsi di track opsi dengan option.name"
sumber
Saya pikir cara termudah adalah
sumber