Tôi đang làm việc để thiết lập các tệp cấu hình trong AngularJS. Có thể tạo ra một nhà máy ở AngularJS có khóa không thể được ghi đè không? Ví dụ: tôi có thể thiết lập một hằng số như thế này, không thể ghi đè số nàyAngularJS "Hằng số" Nhà máy
module.constant ('animals', {"cat": "meow", "dog": "woof"});
Nhưng tôi muốn làm một cái gì đó như thế này cho phép ghi đè giá trị nhưng không phải là nhà máy riêng của mình
module.value('catSound','meow')
.value('dogSound','woof')
.factory('animals', ['catSound','dogSound', function(catSound, dogSound) {
return {
"cat": catSound,
"dog": dogSound
}
});
Nhà máy trên có thể được ghi đè cho phép một đoạn mã để có module.factory('animals',function(){ return 7 })
và phá vỡ mọi thứ. Tuy nhiên, với tư cách là một nhà máy, các giá trị riêng lẻ có thể (và phải) có thể ghi đè, vì vậy tôi có thể chỉ định module.value('catSound','hiss')
và mọi thứ vẫn hoạt động như mong đợi.
Tôi đã thử tiêm vào các hằng số, nhưng theo như tôi đã có thể hiểu rằng điều đó là không thể. Làm thế nào tôi có thể ngăn chặn việc khai báo nhà máy của tôi khỏi bị ghi đè? Tôi nhận thấy rằng hằng số có lẽ không phải là thuật ngữ chính xác khi mô tả những gì tôi muốn, nhưng tôi muốn chức năng của nhà máy định nghĩa là không đổi.
Bạn có thể cung cấp một chút thông tin chi tiết về trường hợp sử dụng của mình không? Các nhà máy ghi đè cung cấp các lợi ích tuyệt vời, ví dụ như để chế nhạo các thử nghiệm. –
Về cơ bản, tôi chỉ đang cố gắng thiết lập một tệp cấu hình mặc định có thể được sao chép và có các thông số được sửa đổi để phù hợp với nhu cầu của từng máy chủ riêng lẻ (nghĩa là, chúng tôi sẽ muốn URL API trỏ tới API phát triển theo mặc định) máy chủ sản xuất, chúng tôi sẽ muốn nó trỏ đến API sản xuất). Ý tưởng là duy trì _all_ của các giá trị cấu hình trong một tệp để làm cho việc cập nhật các giá trị mặc định đơn giản, trong khi ngăn chặn các nhà phát triển vô tình thay đổi đầu ra của nhà máy trong cấu hình cục bộ của họ. 'value()' sẽ cho phép các thay đổi riêng lẻ. Tôi chắc rằng có một phương pháp tốt hơn –
Bạn đã bao giờ tìm ra giải pháp cho vấn đề của mình chưa? Tôi đang đối phó với cùng một vấn đề vào lúc này. –