Thực ra câu hỏi của bạn là tốt. Để làm cho nó rất đơn giản, chúng tôi xác định các dịch vụ trong Angular JS để đạt được các tính năng của chúng tôi. Nhà cung cấp là một trong những cách để định cấu hình cách dịch vụ đó hoạt động. Có một số khái niệm cụ thể hơn là Giá trị, Hằng số, Nhà máy, Dịch vụ và Trang trí trong Angular JS, có thể giúp chúng tôi chặn các dịch vụ theo các cách khác nhau. Vui lòng kiểm tra liên kết dưới đây.
https://docs.angularjs.org/guide/providers
Trở lại với các nhà cung cấp, chúng được sử dụng để xác định cấu hình rộng ứng dụng mà cần phải được thực hiện ngay cả trước khi bắt đầu ứng dụng. Vì các khối cấu hình được thực hiện trước khi các mô-đun JS được tải, chúng tôi sẽ cấu hình các nhà cung cấp theo chúng. Vì các mô-đun sẽ không được tải bởi thời gian đó bạn không thể truy cập các dịch vụ bên trong một khối cấu hình.
Các khối chạy được thực thi khi tất cả các mô-đun được nạp bởi $ injector. Khi bạn nhập một khối chạy, bạn không được phép định cấu hình nhà cung cấp của mình nữa vì dịch vụ của bạn sẽ vẫn được tải. Đó là lý do bạn không thể truy cập các nhà cung cấp bên trong một khối chạy.
Hãy xem ví dụ. Tôi đã thiết kế ứng dụng của mình để hỗ trợ cả màn hình người dùng và quản trị viên. Nhưng các tính năng liên quan đến chúng được xác định trong các dịch vụ tương ứng của chúng. Tôi chỉ muốn tải các dịch vụ thích hợp khi người dùng đăng nhập. Chúng tôi đạt được điều đó bằng cách sử dụng nhà cung cấp như dưới đây.
Xác định rolesProvider
myApp.provider("roles", function rolesProvider(){
var role;
this.setRole = function(value) {
role = value;
}
this.$get = function rolesFactory() {
if(role === "user") {
return new userRole();
} else {
return new adminRole();
}
}
});
Cấu hình rolesProvider như một người dùng
myApp.config(["rolesProvider"], function(rulesProvider){
rulesProvider.setRole("user");
});
Ứng dụng của tôi sẽ được cấu hình để chạy như một người sử dụng chứ không phải là một admin khi ứng dụng đá đi.
Hãy cho tôi biết nếu bạn cần thêm giải thích.
Nguồn
2016-08-10 04:28:12
Cảm ơn ... Nó đã giúp tôi hiểu. – RajSharma
Bạn được chào đón. –