Có phương pháp tích hợp nào để truy cập ngữ cảnh gốc trong mẫu Handlebars.js không? Hầu hết những người trợ giúp đang thêm ngữ cảnh lồng nhau và bạn phải viết ../ trước biến trong ngữ cảnh đó để truy cập nó nhưng điều đó không thực tế lắm nếu bạn có rất nhiều mỗi, nếu, v.v.Truy cập vào ngữ cảnh gốc trong mẫu Handlebar.js
Trả lời
Sử dụng @root. Đây là trong handlebars-v2.0.0.js
{{@root.somthing.nested_somthing}}
Không phải là chưa!
Nó đã được đề nghị một vài lần và có một vé mở: https://github.com/wycats/handlebars.js/issues/392
Lập luận của họ là không bắt buộc nhưng nếu nó là một sửa chữa giá rẻ không có chi phí hiệu quả thấy rõ tôi không thấy lý do tại sao nó không thể được bao gồm.
Vâng, tôi đã tạo ra một thấy http://www.my2ndgeneration.com/TemplateLanguageDoc.aspx#xroot
Về cơ bản, thêm helper này và bingo {{xRoot}} sẽ đưa bạn đến đỉnh ...
tôi luôn truyền dữ liệu JSON của tôi vào tay lái như này:
{ data: self.data }
do đó mã dưới đây luôn trả về "dữ liệu" khi nó thấy thẻ xRoot và đưa tôi lên đỉnh
Handlebars.JavaScriptCompiler.prototype.nameLookup = function (parent, name, type) {
if (name.indexOf("xRoot") === 0) {
return "data";
}
if (/^[0-9]+$/.test(name)) {
return parent + "[" + name + "]";
} else if (Handlebars.JavaScriptCompiler.isValidJavaScriptVariableName(name)) {
return parent + "." + name;
}
else {
return parent + "['" + name + "']";
}
};
không có khả năng truy cập ngữ cảnh gốc của mẫu khi bạn thay đổi ngữ cảnh bằng tính năng lặp (ví dụ: mỗi) more info
Tuy nhiên có một khả năng truy cập vào bối cảnh trước đó với '../'
# app/assets/javascript/contents.coffee
body = HandlebarsTemplates['my_hbs_template']({
view:{
registryName: 'foo',
data: {items: {x: 'x'}}
}
})
mẫu:
<!-- app/assets/javascript/templates/my_content.hbs -->
<table class="table">
<tbody>
{{#each view.data.items}}
<tr>
<td>{{@key}}</td>
<td>
Hello from {{../view.registryName}}
</td>
</tr>
{{/each}}
</tbody>
</table>
séc http://handlebarsjs.com/#paths để biết thêm
- 1. Ngữ cảnh truy cập trong ContentProvider
- 2. Truy cập Đường dẫn ngữ cảnh Tomcat từ Servlet
- 3. truy cập ngữ cảnh mùa xuân trong gói OSGi
- 4. ngữ cảnh gốc của ứng dụng grails
- 5. Chỉnh sửa menu ngữ cảnh gốc Nautilus
- 6. Truy cập SharedPreferences mà không có ngữ cảnh
- 7. <context: property-placeholder> không thể truy cập vào ngữ cảnh con (web)
- 8. Ngữ cảnh ứng dụng mùa xuân: truy cập vào web.xml context-params?
- 9. Bộ xử lý ngữ cảnh Django: Có thể truy cập ngữ cảnh hiện tại trong ContextProcessor không?
- 10. Django, bộ xử lý ngữ cảnh mẫu
- 11. Truy cập phiên trong Mẫu
- 12. Truy cập vào getString() trong android.support.v4.app.FragmentPagerAdapter?
- 13. Thừa kế mẫu django và ngữ cảnh
- 14. Truy cập ngữ cảnh mùa xuân trong @ngày thử nghiệm của Beforeng
- 15. FragmentManager từ Ngữ cảnh
- 16. Truy cập cá thể hoạt động gốc?
- 17. Cách kiểm tra biến ngữ cảnh mẫu với Flask
- 18. java.lang.IllegalStateException: Thuộc tính ngữ cảnh gốc không thuộc loại WebApplicationContext
- 19. Không thể truy cập phương pháp không tĩnh trong ngữ cảnh tĩnh?
- 20. Lớp lồng nhau: Không thể truy cập trường không tĩnh trong ngữ cảnh tĩnh
- 21. Mẫu Django - Thay đổi ngữ cảnh cho mẫu 'bao gồm'
- 22. Thay thế cho mẫu khách truy cập?
- 23. Tôi làm cách nào để truy cập bean gốc trong mẫu FreeMarker?
- 24. Cách thêm nút vào ngữ cảnh "submit_row" trong django
- 25. Luôn bao gồm người dùng trong ngữ cảnh mẫu django
- 26. truy cập biểu mẫu trong iframe
- 27. Làm cách nào để truy cập vào DataContext gốc trong DataTemplate trong WPF?
- 28. Truy cập vào mẫu Django {{Variable}} từ JavaScript
- 29. Cách truy cập các mục menu ngữ cảnh của Windows shell?
- 30. Nhóm theo nhiều bảng và vẫn có quyền truy cập vào truy vấn gốc?
Bạn cũng có thể sử dụng @root trong các khối 'if' và' each', ví dụ: '{{#each @ root.somthing.nested_somthing}}' – user393274
Cảm ơn bạn đã chỉ ra phiên bản, nơi nó được giới thiệu. Chúng tôi đã thất bại cho đến khi chúng tôi nhận ra rằng chúng tôi đã làm việc với handlebars-v.1.3.0.js –