2013-03-29 25 views
16

Có thể sử dụng Handlebars.js với phần mở rộng Backbone.Marionette mà không cần thực hiện lại chức năng Hiển thị chế độ xem không? Dường như Marionette dựa vào quy ước mà bạn sử dụng Backbone.js với dấu gạch dưới động cơ. Nhưng tôi thực sự thích cách tiếp cận tay lái vì vậy tôi hỏi nếu tôi có thể các công cụ cấp cao của Marionette với tay lái.Sử dụng Handlebars.js với Backbone.Marionette

+3

Có điều gì đó về rối và tay lái tích hợp trong wiki rối của, check it out: https://github.com/marionettejs/backbone.marionette/wiki/Using-handlebars-templates-with-marionette – Ingro

+1

kiểm tra liên kết này: [link] [1] hy vọng nó sẽ giúp [1]: http://stackoverflow.com/questions/11501516/backbone-marionette-i18n-handlebars/11505302#11505302 – danikoren

Trả lời

24

Cách đơn giản để sử dụng Handlebars với Marionette chỉ đơn giản là xác định template trong mỗi Chế độ xem dưới dạng hàm mẫu Ghi đè được biên dịch trước. Ví dụ:

var MyView = Backbone.Marionette.ItemView.extend({ 
    template: Handlebars.compile("Hello, {{name}}"), 
    model: new Backbone.Model({name: "Steve"}) 
}); 

mặc định rối của Renderer sẽ phát hiện rằng thuộc tính template là một chức năng, và sẽ gọi nó là phù hợp.

cũng Xem tài liệu chính thức về trường hợp này: https://github.com/marionettejs/backbone.marionette/wiki/Using-handlebars-templates-with-marionette

và Q khác/A với requirejs + rối + tay lái biên dịch sẵn: Using precompiled handlebars templates with Marionette

6

@brettjonesdev là đúng, nhưng người ta bổ sung khác ở đây mà tôi tìm thấy làm việc tốt là:

var MyView = Backbone.Marionette.ItemView.extend({ 
    template: Handlebars.compile($("#assign-products-main-view").html()), 
    model: new Backbone.Model({name: "Steve"}) 
}); 

Điều này giúp khi tìm kiếm DOM.

2

Hai câu trả lời hiện tại không khai thác bộ đệm ẩn. Sử dụng gist này instead.

3

Chúng tôi cũng có thể sử dụng các mẫu được biên dịch sẵn tại đây.

var MyView = Backbone.Marionette.ItemView.extend({ 
template: Handlebars.templates['filename'], 
model: new Backbone.Model({name: "Steve"}) 
}); 

Bằng cách này, chúng tôi có thể xóa vai trò biên dịch khỏi Rối rối.

Các vấn đề liên quan