Khi tôi tải một chế độ xem, tôi muốn chạy một số mã khởi tạo trong bộ điều khiển liên quan của nó.
Để làm như vậy, tôi đã sử dụng chỉ thị ng-init trên phần tử chính của chế độ xem của tôi:
<div ng-init="init()">
blah
</div>
và trong bộ điều khiển:
$scope.init = function () {
if ($routeParams.Id) {
//get an existing object
});
} else {
//create a new object
}
$scope.isSaving = false;
}
Câu hỏi đầu tiên: đây có phải là cách làm đúng?
Điều tiếp theo, tôi gặp vấn đề với chuỗi sự kiện diễn ra. Trong dạng xem, tôi có một nút 'lưu', sử dụng lệnh ng-disabled
như sau:
<button ng-click="save()" ng-disabled="isClean()">Save</button>
các isClean()
chức năng được xác định trong điều khiển:
$scope.isClean = function () {
return $scope.hasChanges() && !$scope.isSaving;
}
Như bạn có thể thấy, nó sử dụng $scope.isSaving
cờ, được khởi tạo trong init()
hàm.
VẤN ĐỀ: khi xem được nạp, hàm isClean được gọi trước khi các init()
chức năng, vì thế mà lá cờ isSaving
là undefined
. Tôi có thể làm gì để ngăn chặn điều đó?