2012-09-24 11 views
48

Tôi đang cố tạo một trình trợ giúp tùy chỉnh bằng Meteor. Sau vào doc ở đây: https://github.com/meteor/meteor/wiki/HandlebarsLàm thế nào để sử dụng nhiều tham số trong một trợ giúp tay lái với thiên thạch?

Tôi đã cố gắng để xác định helper của tôi như sau:

Template.myTemplate.testHelper = function(foo, bar, options) { 
    console.log(foo); 
    console.log(bar); 
} 

mẫu của tôi trông giống như:

<template name="myTemplate"> 
    {{#testHelper "value1" "value2"}} 
    {{/testHelper}} 
</template> 

Nhìn vào đầu ra giao diện điều khiển của tôi, tôi mong đợi để xem 2 dòng đầu ra:

value1 
value2 

Tuy nhiên giao diện điều khiển trông giống như:

value1 
function (data) { 
    // don't create spurious annotations when data is same 
    // as before (or when transitioning between e.g. `window` and 
    // `undefined`) 
    if ((data || Handlebars._defaultThis) === 
     (old_data || Handlebars._defaultThis)) 
     return fn(data); 
    else 
     return Spark.setDataContext(data, fn(data)); 
    } 

Lưu ý, tôi hoàn toàn mới đối với thiên thạch và tay lái. Tôi nghĩ rằng tôi sẽ hạnh phúc hơn nhiều khi sử dụng gạch dưới, nhưng tài liệu cho sao băng liếc qua dưới gạch gần như hoàn toàn. Tôi đang làm điều gì đó sai định nghĩa chức năng trợ giúp của tôi? Dường như nó không nhìn thấy tham số thứ hai "bar", và thay vào đó giải thích rằng đó là các tùy chọn. (Lưu ý: nếu tôi console.log (tùy chọn) nó trả về 'undefined').

Meteor phiên bản 0.4.0 (8f4045c1b9)

Trả lời

53

Logic của bạn là tốt, chỉ cần thực hiện một số thay đổi đối với mẫu

<template name="myTemplate"> 
    {{testHelper "value1" "value2"}} 
</template> 

Bare nhớ rằng chức năng testHelper chỉ xác định trong mẫu myTemplate.

Nếu bạn muốn đăng ký testHelper toàn cầu bạn sẽ cần phải làm một cái gì đó như thế này

Handlebars.registerHelper('testHelper', function(foo, bar){ 
    console.log(foo); 
    console.log(bar); 
}); 

Have fun

+2

Điều này không hợp lệ nếu bạn cần trợ giúp về kiểu {{#if}} Nội dung {{/ if}}. – Donflopez

+8

người ta có thể kết hợp những người trợ giúp trong kịch bản như vậy: '{{#if testHelper" v1 "" v2 "}} một số Bản mẫu {{/ if}}' – Matanya

+0

'Handlebars.registerHelper' được đặt ở đâu? –

1

bổ sung

<template name="myTemplate"> {{testHelper "value1" "value2"}} </template>

Thay vì đi qua một giá trị như một tham số truyền hàm như tham số Đây là mã cho rằng

<template name="myTemplate"> 
    {{ testHelper1 (testHelper2 "value2") }} 
</template> 

chúc mừng !!!!!