เมื่อฉันโหลดมุมมองฉันต้องการเรียกใช้รหัสเริ่มต้นในตัวควบคุมที่เกี่ยวข้อง
ในการทำเช่นนั้นฉันได้ใช้คำสั่ง ng-init กับองค์ประกอบหลักของมุมมองของฉัน:
<div ng-init="init()">
blah
</div>
และในตัวควบคุม:
$scope.init = function () {
if ($routeParams.Id) {
//get an existing object
});
} else {
//create a new object
}
$scope.isSaving = false;
}
คำถามแรก: นี่เป็นวิธีที่ถูกต้องหรือไม่?
สิ่งต่อไปฉันมีปัญหากับลำดับเหตุการณ์ที่เกิดขึ้น ในมุมมองฉันมีปุ่ม 'บันทึก' ซึ่งใช้ng-disabled
คำสั่งเช่นนี้:
<button ng-click="save()" ng-disabled="isClean()">Save</button>
isClean()
ฟังก์ชั่นที่กำหนดไว้ในการควบคุม:
$scope.isClean = function () {
return $scope.hasChanges() && !$scope.isSaving;
}
อย่างที่คุณเห็นมันใช้$scope.isSaving
แฟล็กซึ่งเริ่มต้นในinit()
ฟังก์ชัน
ปัญหา: เมื่อมุมมองที่มีการโหลดฟังก์ชั่น isClean เรียกว่าก่อนที่จะinit()
ฟังก์ชั่นจึงธงคือisSaving
undefined
ฉันจะทำอย่างไรเพื่อป้องกันสิ่งนั้น