Saat saya memuat tampilan, saya ingin menjalankan beberapa kode inisialisasi di pengontrol terkait.
Untuk melakukannya, saya telah menggunakan direktif ng-init pada elemen utama tampilan saya:
<div ng-init="init()">
blah
</div>
dan di pengontrol:
$scope.init = function () {
if ($routeParams.Id) {
//get an existing object
});
} else {
//create a new object
}
$scope.isSaving = false;
}
Pertanyaan pertama: apakah ini cara yang benar untuk melakukannya?
Hal berikutnya, saya punya masalah dengan urutan kejadian yang terjadi. Dalam tampilan saya memiliki tombol 'simpan', yang menggunakan ng-disabled
arahan seperti:
<button ng-click="save()" ng-disabled="isClean()">Save</button>
yang isClean()
fungsi didefinisikan di controller:
$scope.isClean = function () {
return $scope.hasChanges() && !$scope.isSaving;
}
Seperti yang Anda lihat, ini menggunakan $scope.isSaving
bendera, yang diinisialisasi dalam init()
fungsi.
MASALAH: ketika melihat dimuat, fungsi isClean disebut sebelum ini init()
fungsi, maka bendera isSaving
adalah undefined
. Apa yang dapat saya lakukan untuk mencegahnya?