Đôi khi tôi cần sử dụng $scope.$apply
mã của mình và đôi khi nó xuất hiện lỗi "thông báo đã được xử lý". Vì vậy, tôi bắt đầu tìm cách giải quyết vấn đề này và tìm thấy câu hỏi này: AngularJS: Ngăn chặn lỗi $ thông báo đang diễn ra khi gọi $ scope. $ Apply () . Tuy nhiên, trong các nhận xét (và trên wiki góc cạnh), bạn có thể đọc:
Đừng làm nếu (! $ Scope. $$ phase) $ scope. $ Apply (), điều đó có nghĩa là $ scope. $ Apply () của bạn không đủ cao trong ngăn xếp cuộc gọi.
Vì vậy, bây giờ tôi có hai câu hỏi:
- Chính xác tại sao đây là một mô hình chống?
- Làm cách nào để tôi có thể sử dụng $ scope. $ Một cách an toàn?
Một "giải pháp" khác để ngăn lỗi "thông báo đã được xử lý" dường như đang sử dụng $ timeout:
$timeout(function() {
//...
});
đó là phải đường để đi không? Nó có an toàn hơn không? Vì vậy, đây là câu hỏi thực sự: Làm thế nào tôi có thể loại bỏ hoàn toàn khả năng xảy ra lỗi "thông báo đã được xử lý"?
Tái bút: Tôi chỉ đang sử dụng $ scope. $ Áp dụng trong các lệnh gọi lại non-anglejs không đồng bộ. (Theo như tôi biết, đó là những tình huống mà bạn phải sử dụng $ scope. $ áp dụng nếu bạn muốn các thay đổi của mình được áp dụng)
scope
từ bên trong góc cạnh hoặc từ bên ngoài góc cạnh. Vì vậy, theo điều này bạn luôn biết, nếu bạn cần gọiscope.$apply
hoặc không. Và nếu bạn đang sử dụng cùng một mã cho cảscope
thao tác góc / không góc , bạn đang làm sai, nó phải luôn được tách biệt ... vì vậy về cơ bản nếu bạn gặp phải trường hợp cần kiểm trascope.$$phase
, mã của bạn không thiết kế theo một cách chính xác, và luôn luôn có một cách để làm điều đó 'đúng cách'