Tôi đang cố gắng hiểu rõ hơn về các sắc thái của việc sử dụng dịch vụ $ timeout trong Angular như một phương thức "an toàn $ áp dụng". Về cơ bản trong các kịch bản mà một đoạn mã có thể chạy để đáp ứng với một sự kiện Góc hoặc một sự kiện không có góc như jQuery hoặc một số sự kiện DOM chuẩn.
Như tôi hiểu điều:. Đang
- Wrapping trong $ phạm vi $ áp dụng tác phẩm tốt cho kịch bản mà bạn không đã có trong một vòng lặp tiêu hóa (aka jQuery sự kiện.) Nhưng sẽ nâng cao một lỗi nếu một digest là cơ bản dở dang đang
- Wrapping trong một thời gian chờ $() gọi không có tham số trì hoãn hoạt động cho dù đã có trong một chu kỳ tiêu hóa hay không
Nhìn vào mã nguồn góc, nó trông giống như $ timeout thực hiện cuộc gọi tới $ rootScope. $ apply().
- Tại sao không có $ timeout() cũng gây ra lỗi nếu chu kỳ thông báo đang được tiến hành?
- Cách tốt nhất để sử dụng phạm vi $. $ Apply() khi bạn biết chắc chắn rằng thông báo chưa được tiến hành và $ timeout() khi cần nó an toàn theo cách nào?
- Có phải $ timeout() thực sự là "áp dụng an toàn" có thể chấp nhận được hoặc có gotchas không?
Cảm ơn mọi thông tin chi tiết.
trong dự án của tôi, tôi có một kịch bản mà tôi cần phải tăng $ scope. $ digest() để nắm bắt các sự kiện xảy ra bên ngoài khung nhìn của Angular. orm cho safeApply hoặc safeDigest hoặc điều này đã được cố định thông minh bên trong khuôn khổ? – TrueBlue
Tại sao bạn cần phải dựa vào '$ timeout' thay vì' $ apply'? Nếu bạn không thể chia sẻ mã, bạn có thể ít nhất là thảo luận về lý do cơ bản? – trysis