Bir görünümü yüklediğimde, ilişkili denetleyicisinde bazı başlatma kodunu çalıştırmak istiyorum.
Bunu yapmak için, görüşümün ana unsuru üzerine ng-init direktifini kullandım:
<div ng-init="init()">
blah
</div>
ve kontrolörde:
$scope.init = function () {
if ($routeParams.Id) {
//get an existing object
});
} else {
//create a new object
}
$scope.isSaving = false;
}
İlk soru: bunu yapmanın doğru yolu bu mu?
Sonraki şey, gerçekleşen olayların sıralamasıyla ilgili bir sorunum var. Görünümde, ng-disabled
yönergeyi şu şekilde kullanan bir 'kaydet' düğmesi var :
<button ng-click="save()" ng-disabled="isClean()">Save</button>
isClean()
fonksiyon cihaz şu şekilde tanımlanır:
$scope.isClean = function () {
return $scope.hasChanges() && !$scope.isSaving;
}
Gördüğünüz gibi $scope.isSaving
, init()
işlevde başlatılan bayrağı kullanıyor .
Sorun: görünüşüdür yüklendiğinde, isClean işlev olarak adlandırılır önceinit()
dolayısıyla bayrak, fonksiyon isSaving
olduğu undefined
. Bunu önlemek için ne yapabilirim?