nếu bạn có một bộ điều khiển để thao tác $ phạm vi biến trong Angular.js, là có một cách thành ngữ để:reinitialize một bộ điều khiển Angular.js
- reset phạm vi $ của bộ điều khiển, và
- khởi động lại bộ điều khiển khởi ?
Đối với bộ điều khiển phức tạp, sẽ rất thuận tiện để không phải đặt lại mọi biến về giá trị ban đầu, đặc biệt là những gì bạn thực sự muốn là khởi động lại đơn giản của bộ điều khiển và phạm vi. Tuy nhiên, điều hướng đến cùng một URL thông qua $location.path()
không giúp ích gì.
Chỉnh sửa: Giả sử tôi không thể sử dụng bất kỳ $window.location
hack nào vì điều này sẽ vi phạm CSP trong Ứng dụng được đóng gói của Chrome.
Tôi không đồng ý, tôi nghĩ rằng đây là một giải pháp hoàn hảo nhã. Trong một nghĩa nào đó, bạn đang tải lại trang, vì vậy $ route.reload() tạo ra rất nhiều ý nghĩa. – wvdz
@popovitsj: Trong khi thật tuyệt khi biết rằng điều này không phải được coi là hành vi xấu, tôi vẫn chưa thực sự thuyết phục. Mặc dù bạn chắc chắn rằng có một số khiếu nại đối với giải pháp này vì ngữ nghĩa '$ route.reload()' tương tự như tải lại trang, nó vẫn tạo ra rất nhiều chi phí. Điều này có thể được bỏ qua trong rất nhiều trường hợp sử dụng cụ thể (nó chắc chắn là trong tôi tại thời điểm đó), nhưng nó vẫn sẽ được tốt đẹp để có một phương pháp sạch sẽ bằng nhau tránh được việc tạo ra chi phí này. – bfncs
Chúng ta có thể di chuyển nội dung của oninit trong một phương thức riêng (gọi là 'init') và gọi nó từ oninit và cuối cùng sử dụng cùng một phương thức riêng để thiết lập lại bộ điều khiển nhiều lần như chúng ta muốn? – JVM