Tôi muốn tải các mẫu bổ sung khi đang di chuyển. Có thể không?Có thể tải mẫu Handlebars qua Ajax không?
Trả lời
Bạn có thể đăng ký mẫu mới trong Ember.TEMPLATES
. Sau đó, họ sẽ có sẵn để xem.
Một đoạn trích từ mã của tôi (jQuery Ajax handler):
success: function(data) {
$(data).filter('script[type="text/x-handlebars"]').each(function() {
templateName = $(this).attr('data-template-name');
Ember.TEMPLATES[templateName] = Ember.Handlebars.compile($(this).html());
});
}
Vậy là xong.
Tôi chỉ tìm kiếm những điều tương tự và tôi sắp có một vở kịch với đoạn mã dưới đây
tín dụng: borismus trên github https://gist.github.com/2165681
<script>
/*
* Loads a handlebars.js template at a given URL. Takes an optional name, in which case,
* the template is added and is reference-able via templateName.
*/
function loadTemplate(url, name, callback) {
var contents = $.get(url, function(templateText) {
var compiledTemplate = Ember.Handlebars.compile(templateText);
if (name) {
Ember.TEMPLATES[name] = compiledTemplate
} else {
Ember.View.create({ template: compiledTemplate }).append();
}
if (callback) {
callback();
}
});
}
</script>
Thú vị, thực sự. Đó là một loại nguyên thủy hơn, để tải một mẫu đơn. Giải pháp trước của tôi cho phép bất kỳ số lượng mẫu tải nào * (phù hợp hơn với nhu cầu của tôi) *. –
Tôi hiểu. Tôi thực sự khá thích ý tưởng của một tập tin đa mẫu 'bao gồm', chỉ để có được một số tiếng ồn ra khỏi tập tin HTML và không tạo ra quá nhiều yêu cầu. Cuộc gọi tốt – joevallender
Tôi đang sử dụng requirejs cùng với plugin văn bản để tải mẫu thanh điều khiển động.
r.js tôi ưu hoa sẽ biên dịch mẫu handlerbar vào tập tin văn bản, mà có thể được nạp dễ dàng sử dụng requirejs hoặc thậm chí ajax
Mike ... bạn sẽ phiền gói mã mà thành một gói lớn để chúng ta có thể thấy vòng đời? Bạn lưu trữ mẫu bên ngoài như thế nào? Filetype của nó là gì? Bạn đang tải nó với một get hoặc getJSON? – commadelimited
Tôi truy xuất nội dung mẫu từ các kết quả của cuộc gọi 'get', chứa các thực thể HTML, vì chúng sẽ đến một phản hồi trang tiêu chuẩn đơn giản. –
Đây là giải pháp tiết kiệm thế giới [của tôi] :) Thx! –