Saya menggunakan ng-options untuk memilih nilai dari pull-down. Saya ingin bisa membandingkan nilai lama dengan nilai baru. ng-change berfungsi dengan baik untuk mengambil nilai baru pull down, tetapi bagaimana saya bisa mendapatkan nilai baru dan nilai aslinya?
<select ng-change="updateValue(user)" ng-model="user.id" ng-options="user.id as user.name for user in users"></select>
Misalnya, saya ingin pengontrol mencatat, "Nama pengguna.anda sebelumnya adalah BILL, nama pengguna Anda saat ini adalah PHILLIPE."
angularjs
ng-options
Bailey Smith
sumber
sumber
Jawaban:
Dengan sudut {{ekspresi}} Anda bisa menambahkan nilai pengguna lama atau user.id ke atribut ng-change sebagai string literal:
Di ngChange, argumen pertama ke updateValue akan menjadi nilai pengguna baru, argumen kedua akan menjadi literal yang terbentuk saat tag-pilih terakhir diperbarui oleh sudut, dengan nilai user.id yang lama.
sumber
user
pemanggilan metode in adalah daring-model
, dan bukan dari ng-options (mungkin menyesatkan). Semoga solusi elegan ini akan bekerja juga di versi angular yang akan datang :)user.id
numerik ... tidak akan berfungsi jikauser.id
berupa string atau guidAnda juga bisa menggunakan
sumber
Anda bisa menggunakan sesuatu seperti ng-change = someMethod ({{user.id}}). Dengan mempertahankan nilai Anda di sisi {{ekspresi}}, ini akan mengevaluasi ekspresi sebaris dan memberi Anda nilai saat ini (nilai sebelum metode ng-change dipanggil).
sumber
Cukup pertahankan variabel currentValue di pengontrol yang Anda perbarui pada setiap perubahan. Anda kemudian dapat membandingkannya dengan nilai baru setiap kali sebelum Anda memperbaruinya. '
Ide untuk menggunakan jam tangan juga bagus, tetapi menurut saya variabel sederhana adalah solusi paling sederhana dan paling logis.
sumber
Anda dapat menggunakan arloji lingkup:
https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$watch
sumber
Anda dapat menggunakan arloji sebagai gantinya, karena itu memiliki nilai lama dan baru, tetapi kemudian Anda menambah siklus intisari.
Saya hanya akan menyimpan variabel kedua di controller dan mengaturnya.
sumber
$watch
akan diaktifkan setiap kali variabel berubah. Pengamat meningkatkan kompleksitas dan cenderung membuat siklus pembaruan ketika kode mengubah nilainya.