2013-07-30 23 views
13

Dưới đây là một tay lái helper điển hình là gì:cách chuyển tham số vào trình trợ giúp Handlebars? sự khác biệt giữa options.hash & options.data

Ember.Handlebars.helper 'myHelper', (value, options) -> 
    ... 

Theo this protip bạn có thể vượt qua băm để tay lái người giúp đỡ. Tôi đã xem qua nguồn và phát hiện ra rằng nó cung cấp cả hai options.hashoptions.data. Tôi là một chút bối rối vì điều này sẽ không hoạt động như mong đợi:

{{#with controllers.currentCardCategory}} 
    {{#each property in cardProperties}} 
    <td class="td">{{cardProperty this property=property.symbol}}</td> 
    {{/each}} 
{{/with}} 

thisCard kỷ lục hiện nay. Ở đây tôi đã property.symbol như chuỗi

Nhưng điều này đã làm việc:

{{#with controllers.currentCardCategory}} 
    {{#each property in cardProperties}} 
    <td class="td">{{cardProperty this property.symbol}}</td> 
    {{/each}} 
{{/with}} 

và giá trị là truy cập qua options.

Nhưng bây giờ tôi không thể làm điều này:

{{#with controllers.currentCardCategory}} 
    {{#each property in cardProperties}} 
    <td class="td">{{cardProperty this property.symbol anotherParam yetAnotherParam}}</td> 
    {{/each}} 
{{/with}} 

Câu hỏi của tôi là: làm thế nào để vượt qua các thông số khác để các helpersự khác biệt giữa options.hashoptions.data trong helper là gì?

Trả lời

14

Các tham số được truyền cho người trợ giúp trở thành arguments với chức năng trợ giúp. Các giá trị bạn cung cấp trong mẫu ngay sau khi {{helperName trở thành đối số. Đối số cuối cùng được truyền cho trình trợ giúp là đối tượng options cung cấp thông tin bổ sung cho người trợ giúp như, options.hashoptions.contexts, v.v. Các cặp giá trị chính được cung cấp sau các tham số tương ứng với thuộc tính options.hash.

Đối với một helper hello mà mất 3 lập luận, các helper sẽ,

Ember.Handlebars.helper('hello', function(a, b, c, options) { 
    return '%@ - %@ - %@'.fmt(a, b, c); 
}); 

Các hello helper có thể được sử dụng trong một khuôn mẫu như vậy,

{{hello lorem ipsum dolor}} 

Ở đây các giá trị của lorem, Các thuộc tính ipsumdolor sẽ được sử dụng và trả về dưới dạng chuỗi kết hợp.

Ngoài các đối số bắt buộc, nếu bạn chuyển các tham số bổ sung, chúng sẽ có sẵn trong options.hash. Các thuộc tính này được coi là chuỗi và không được giải quyết theo mặc định. Bạn cần phải sử dụng, options.data.view để tra cứu giá trị của chúng trước tiên. Hãy xem answer để biết ví dụ nếu bạn cần thực hiện việc này.

Cuối cùng options.data là tài sản đặc biệt được cung cấp cho người trợ giúp. Đó là các tay lái thô Frame chứa các biến, ngữ cảnh, v.v. Đó là chủ yếu để sử dụng với những người giúp đỡ khối. Vì những người giúp đỡ khối không tự dựng hình nhưng gọi những người trợ giúp khác, options.data cho phép những người giúp đỡ khối này tiêm các biến bổ sung vào khung người giúp đỡ trẻ em. Để biết chi tiết, hãy xem tài liệu here.

Dưới đây là ví dụ jsbin.

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