Handlebars.jsテンプレートのルートコンテキストにアクセスするための組み込みメソッドはありますか? ヘルパーのほとんどはネストされたコンテキストを追加しています。そのコンテキストの変数の前に../を書く必要がありますが、それぞれのコンテキストやifsなどがたくさんある場合はあまり実用的ではありません。Handlebar.jsテンプレートのルートコンテキストへのアクセス
23
A
答えて
42
使用@rootため
<!-- 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>
チェックhttp://handlebarsjs.com/#paths:各)more info
しかし'../'
# app/assets/javascript/contents.coffee
body = HandlebarsTemplates['my_hbs_template']({
view:{
registryName: 'foo',
data: {items: {x: 'x'}}
}
})
テンプレートを使用して、以前のコンテキストにアクセスする可能性があります。これはhandlebars-v2.0.0.jsにあります。
{{@root.somthing.nested_somthing}}
0
まだ!
それは数回示唆されているとのオープンチケットがあります:https://github.com/wycats/handlebars.js/issues/392
彼らの引数は、それが必要とされていないということですが、それが識別できるパフォーマンス上のオーバーヘッドと安い修正であれば、私はなぜ表示されませんそれを含めることはできません。
2
はい、1、基本的にhttp://www.my2ndgeneration.com/TemplateLanguageDoc.aspx#xroot
を参照してください{{xRoot}}このヘルパーやビンゴを追加するにはトップに行くことができますIを作成している...
私はいつものように、ハンドルバーに私のJSONデータを渡しますこの:それはxRootタグを見て、トップ
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 + "']";
}
};
に私を取るとき
{ data: self.data }
ので、以下のコードは、常に「データ」を返します
6
コンテキストを変更すると、テンプレートのルートコンテキストにアクセスする可能性はありません。 詳細
関連する問題
- 1. Handlebar.jsがテンプレートをリフレッシュしない
- 2. テンプレートのメタデータattrへのアクセス
- 3. モバイルサイト/テンプレートへのアクセス方法
- 4. Joomla 2.5、コンポーネントのテンプレートのテンプレートパラメータへのアクセス
- 5. Flask - テンプレートのconfig変数へのアクセス
- 6. MVC4テンプレートが唯一のフィールドへのアクセス
- 7. twigテンプレートの#optionsキーへのアクセス
- 8. Meteor 1.4の{{> atForm}}テンプレートへのアクセス
- 9. テンプレート内のIonic2アレイへのアクセス
- 10. テンプレート内の属性へのアクセス
- 11. Thymeleafテンプレートのセッション属性へのアクセス
- 12. Django:テンプレートの1対1フィールドへのアクセス
- 13. Djangoテンプレートのdict値へのアクセス
- 14. GridViewColumnHeaderテンプレートのテキストボックスへのアクセス方法
- 15. GDBのC++テンプレート変数へのアクセス
- 16. Django:テンプレートのリスト属性へのアクセス
- 17. ノックアウト:HTMLテンプレートのviewmodelインスタンスへのアクセス
- 18. テンプレート内のユーザー '拡張モデル'へのアクセス
- 19. djangoテンプレートのjson値へのアクセス
- 20. テンプレート内のxslグローバル変数へのアクセス
- 21. Djangoテンプレートへのアクセスを制限する
- 22. SuperAbbrevsテンプレートからjEdit変数へのアクセス
- 23. 顧客の編集をどのように安全にするかHandlebar.jsテンプレート
- 24. Spring MVCポートレット:ルートコンテキストでポートレットコンテキストからBeanにアクセス
- 25. Underscore.jsを使用した動的フォーム入力を伴うHandlebar.jsテンプレート - Zendesk App
- 26. テンプレートを展開する前のテンプレートの基本クラスへのアクセスは、
- 27. テンプレートのload_nodeのDrupal 7のフィールド値へのアクセス
- 28. 春のブートとフォームThymeleaf。テンプレートからのオブジェクトのプロパティへのアクセス
- 29. テンプレート化された親からの子のtypedefへのアクセス
- 30. テンプレート内の親スコープからの関数へのアクセス
@rootを 'if'ブロックと' each'ブロックで使用することもできます。 '{{#each @ root.somthing.nested_somthing}}' – user393274
バージョンが導入されたことを指摘してくれてありがとう。ハンドルバー(v.1.3.0.js)を使って作業していることがわかって初めて、 –