Saya mencoba untuk mendapatkan kotak-pilih untuk memulai dengan opsi yang sudah diisi menggunakan ng-repeat dengan AngularJS 1.1.5. Sebaliknya pilih selalu dimulai dengan tidak ada yang dipilih. Ini juga memiliki opsi kosong, yang tidak saya inginkan. Saya pikir ada efek samping dari tidak ada yang dipilih.
Saya bisa menjalankan ini menggunakan ng-options alih-alih ng-repeat, tapi saya ingin menggunakan ng-repeat untuk kasus ini. Meskipun contoh saya yang dipersempit tidak menunjukkannya, saya juga ingin mengatur atribut judul dari setiap opsi, dan tidak ada cara untuk melakukannya menggunakan opsi-ng, sejauh yang saya tahu.
Saya tidak berpikir ini terkait dengan lingkup AngularJs umum / masalah warisan prototipikal. Setidaknya saya tidak melihat sesuatu yang jelas ketika memeriksa di Batarang. Plus, ketika Anda memilih opsi di pilih dengan UI, model tidak memperbarui dengan benar.
Inilah HTML-nya:
<body ng-app ng-controller="AppCtrl">
<div>
Operator is: {{filterCondition.operator}}
</div>
<select ng-model="filterCondition.operator">
<option
ng-repeat="operator in operators"
value="{{operator.value}}"
>
{{operator.displayName}}
</option>
</select>
</body>
Dan JavaScript:
function AppCtrl($scope) {
$scope.filterCondition={
operator: 'eq'
}
$scope.operators = [
{value: 'eq', displayName: 'equals'},
{value: 'neq', displayName: 'not equal'}
]
}
JS Fiddle untuk ini: http://jsfiddle.net/coverbeck/FxM3B/2/
sumber
Jawaban:
BAIK. Jika Anda tidak ingin menggunakan cara yang benar
ng-options
, Anda dapat menambahkanng-selected
atribut dengan logika pemeriksaan kondisi untukoption
arahan agar pre-select berfungsi.Working Demo
sumber
Untuk tag pilih, angular memberikan arahan opsi-ng. Ini memberi Anda kerangka kerja spesifik untuk mengatur opsi dan menetapkan default. Ini biola yang diperbarui menggunakan opsi-ng yang berfungsi seperti yang diharapkan: http://jsfiddle.net/FxM3B/4/
HTML yang diperbarui (kode tetap sama)
sumber
Terima kasih kepada TheSharpieOne karena menunjukkan opsi yang dipilih. Jika itu telah diposting sebagai jawaban daripada sebagai komentar, saya akan membuat jawaban yang benar.
Inilah JSFiddle yang berfungsi: http://jsfiddle.net/coverbeck/FxM3B/5/ .
Saya juga memperbarui biola untuk menggunakan atribut judul, yang saya tinggalkan di posting asli saya, karena itu bukan penyebab masalah (tetapi itu adalah alasan saya ingin menggunakan ng-repeat daripada ng-options) .
HTML:
JS:
sumber
Fakta bahwa sudut menyuntikkan elemen opsi kosong ke pilih adalah bahwa objek model terikat padanya secara default datang dengan nilai kosong ketika diinisialisasi.
Jika Anda ingin memilih opsi default maka Anda mungkin dapat mengaturnya pada ruang lingkup di controller
Jika Anda ingin placeholder opsi kosong, ini berfungsi untuk saya
sumber
Seperti yang disarankan Anda perlu menggunakan opsi-ng dan sayangnya saya percaya Anda perlu referensi elemen array untuk default (kecuali array adalah array string).
http://jsfiddle.net/FxM3B/3/
JavaScript:
HTML:
sumber
Jika Anda menggunakan md-pilih dan ng-ulangi md-opsi dari bahan sudut maka Anda dapat menambahkan
ng-model-options="{trackBy: '$value.id'}"
ke abu tag md-pilih yang ditunjukkan pada pena iniKode:
sumber