2013-07-01 33 views
9

Hãy nói rằng tôi có tay lái helper này:Vượt qua một sốVar + 'một chuỗi' để trợ giúp Handlebars.js?

Handlebars.registerHelper('someRandomHelperCreatingALink', function(passedVarAndString, url) { 
    return '<a href="'+url+'">'+passedVarAndString+'</a>'; 
}); 

Và muốn sử dụng nó như thế này, nơi tôi vượt qua cả một chuỗi AND một var như là đối số đầu tiên (user.name+' is a cool dude!'):

{{{ someRandomHelperCreatingALink user.name+' is a cool dude!!' '/a/cool/url' }}} 

Câu hỏi của tôi: Liệu bằng cách nào đó có thể được?

Hoặc tôi có phải thêm đối số thừa cho chuỗi (điều này có cảm thấy không cần thiết) không? Một cái gì đó như thế này:

Handlebars.registerHelper('someRandomHelperCreatingALink', function(passedVarAndString, url, extraUnnecessary) { 
    return '<a href="'+url+'">'+passedVarAndString+extraUnnecessary+'</a>'; 
}); 

{{{ someRandomHelperCreatingALink user.name '/a/cool/url' ' is a cool dude!!' }}} 

Trả lời

-2

Thêm biến cộng với chuỗi như là đối số đầu tiên dường như không làm việc trong thử nghiệm giới hạn của tôi. Nếu nó luôn luôn là một biến và một chuỗi mà bạn đang chuyển đến helper, bạn cũng có thể chỉ cần thêm chúng, ngay cả khi nó có vẻ không cần thiết. Nhưng bỏ qua các dấu phẩy không liên quan:

{{{ someRandomHelperCreatingALink user.name '/a/cool/url' ' is a cool dude!!' }}} 

Nhưng, nếu bạn có thể thấy mình đi qua một số tùy ý lựa chọn, bạn có thể sử dụng một options hash:

.js:

Handlebars.registerHelper('createLink', function(options) { 
    return '<a href="' + options.hash.url + '">' + options.hash.name + '</a>'; 
    }); 

.html :

{{{ createLink name="Meteor" url="http://meteor.com" }}} 
+0

"Thêm biến cộng với chuỗi làm đối số đầu tiên dường như không hoạt động trong thử nghiệm giới hạn của tôi". -> Đó là chính xác những gì tôi muốn thực hiện, như thường xuyên nhất tôi sẽ chỉ vượt qua một chuỗi, nhưng giống như một lần trong ứng dụng tôi sẽ cần phải vượt qua một chuỗi + một var. (Loại bỏ các comas từ ví dụ của tôi bây giờ, đã viết mã thẳng vào trình soạn thảo ở đây mà không thực sự nghĩ :)) Cảm ơn! –

2

Điều này là không thể bởi vì tại thời điểm này thông số chỉ là một chuỗi. Bạn có thể tạo một trình trợ giúp thứ hai để nối chuỗi, hoặc xây dựng chuỗi trước trong bộ điều khiển

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