Lớp CheeseController được tạo và khi tôi kích hoạt tuyến đường Pho mát, thể hiện của lớp đó được thực hiện là điều tôi thực sự chạm khi nói chuyện với bộ điều khiển trong mẫu tay lái của tôi.
Có đó là chính xác những gì sẽ xảy ra. Ember tạo ra một thể hiện đơn lẻ của App.CheeseController và cung cấp nó như là bối cảnh khi biểu diễn mẫu handlebars của bạn.
Có thể truy cập trực tiếp mà đối tượng khởi tạo từ bên trong giao diện điều khiển javascript
Yes. Cách tốt nhất để làm điều này từ bảng điều khiển javascript là bằng cách sử dụng tay lái {{debugger}}
trợ giúp từ mẫu của bạn. Thao tác này sẽ mở bảng điều khiển gỡ lỗi JS trong ngữ cảnh mẫu của bạn.
<script type="text/x-handlebars" data-template-name="cheese">
{{debugger}}
</script>
Với debugger mở, bạn có thể truy cập vào bộ điều khiển singleton instantiated như this
, vì vậy this.toString()
nên trả lại một cái gì đó giống như <App.CheeseController:ember225>
.
(hoặc từ trong chương trình của tôi)?
Phụ thuộc vào phần nào của chương trình của bạn
- Từ một con đường: Sử dụng
this.controllerFor('cheese')
- Từ một mô hình: Số Xin đừng truy cập vào bộ điều khiển từ các mô hình.
- Từ bộ điều khiển khác: Nếu bạn khai báo sự phụ thuộc trong bộ điều khiển khác,
needs: ['cheese']
thì đơn vị App.CheeseController
sẽ được truy cập từ bộ điều khiển khác thông qua thuộc tính controllers.cheese
. Xem Automatically synthesize the controller 'needs' dependencies
- Từ một mẫu: Sử dụng mảng
needs
để tuyên bố một sự phụ thuộc từ bộ điều khiển mẫu, sau đó từ bên trong mẫu của bạn điều khiển pho mát là tại địa chỉ: {{controllers.cheese}}
Nó cũng có thể truy cập vào dụ cheeseController qua thùng chứa ember, nhưng xin đừng. Vùng chứa không phải là một API công khai. Những cập nhật gần đây cho Ember đã làm cho việc truy cập nó hơi khó xử. Điều này là do sử dụng các hằng số toàn cục để truy cập các đóng gói phá vỡ các cá thể, và trong khi đó là tốt cho bàn điều khiển, nó nên tránh trong mã ứng dụng của bạn. Để biết thêm chi tiết, hãy xem App.container was not meant to be a public API
Thông thường, các đối tượng mà Ember tự động phát trực tiếp ở đâu? Bộ nhớ đệm trong bộ điều khiển nội bộ trong bộ chứa. Tất nhiên nó không phải là một phần của API công cộng, nhưng nếu bạn tò mò về cách làm việc trong nội bộ kiểm tra container_test.js và What is the purpose of the Ember.Container
Nguồn
2013-01-24 17:26:12
Sử dụng ember-master (pre4), và cho ** chỉ mục đích gỡ lỗi **, bạn có thể truy cập vào bộ điều khiển bằng: 'App .__ container __. lookup ('controller: cheese')'. Nó cũng hoạt động với 'route: theRoute'. – louiscoquio