Tôi có một chỉ thị "ng-init" trong HTML của tôi khởi tạo giá trị "data.id" trong mô hình dữ liệu Angular.js của tôi. Bây giờ hãy nói rằng tôi không thể thay đổi cách hoạt động của nó.Cách thích hợp để đợi các giá trị ng-init được thiết lập là gì?
Bây giờ, tôi muốn thực hiện yêu cầu HTTP ngay khi trang của tôi tải, nơi URL sẽ phụ thuộc vào giá trị data.id này. Cho đến nay, các công việc sau dường như hoạt động:
app.controller('MainCtrl', function ($scope, $http, $timeout) {
"use strict";
$scope.data = {};
$timeout(function() {
$http.get("/api/Something?id=" + $scope.data.id);
}, 0);
});
Tuy nhiên, việc sử dụng hẹn giờ với thời gian chờ bằng 0 có vẻ khó khăn. (Và nếu tôi bỏ qua mã $ timeout và chỉ cần gọi trực tiếp $ http.get, thì $ scope.data.id là, tất nhiên, không xác định).
Có cách nào tốt hơn để chờ cho đến khi lệnh ng-init được thực thi trước khi đưa ra yêu cầu $ http không? Và mã thời gian chờ ở trên có được đảm bảo hoạt động trong mọi trường hợp/trên tất cả các trình duyệt không?
tôi sẽ đề nghị mô hình hoặc điều khiển bạn đang tìm kiếm sau khi dữ liệu và quan điểm chỉ phản ánh dữ liệu, không cài đặt nó. đó là cách tiếp cận "góc cạnh" nhiều hơn nữa imho – Anton