Emberはその規則を使用して、直接の名前または名前へのパスのいずれかであるテンプレートを検索します。、と入力するだけの場合nav
、emberはそれが名前であると見なします。
これに関する最良のドキュメントは常にソースコードであり、この場合は次のようになります(ファイル:packages / ember-routing / lib / system / route.js):
render: function(name, options) {
if (typeof name === 'object' && !options) {
options = name;
name = this.routeName;
}
name = name ? name.replace(/\//g, '.') : this.routeName;
var container = this.container,
view = container.lookup('view:' + name),
template = container.lookup('template:' + name);
if (!view && !template) { return; }
this.lastRenderedTemplate = name;
options = normalizeOptions(this, name, template, options);
view = setupView(view, container, options);
appendView(this, view, options);
}
あなたの質問への回答はラインです
name = name ? name.replace(/\//g, '.') : this.routeName;
したがって、残り火のテンプレートの名前は、テンプレートに付ける名前か、すべてのスラッシュがドットに変換されるパスに基づく名前のいずれかです(残り火の慣例により)。
更新、2013年8月2日-コメントでの@sudhanshuの質問への回答
テンプレートのデフォルトの使用方法は、アプリケーションのルーターの構成です。
App.Router.map(function() {
this.route("members");
this.route("member", { path: "/members/:refId" } );
this.route("membernew", { path: "/member/new" } );
});
上記の小さな例は、ルーターの3つの機能を示しています。
- 「members」は単なる名前であり、規則を適用します。つまり、パスは定義されていません。したがって、emberjsは自動的にそのパス
/members
を使用します。
- 「member」は、リソースを識別して適切なメンバーをロードするために、動的URL部分を使用します。ここでは、パスを定義する必要があります。
- 「membernew」もパスを定義します。これは、デフォルトのパスを使用したくないためです。
/membernew
まったく同じ規則に従って、emberjsは、ルーターで定義した名前でテンプレートをロードしようとします。上記の例では、emberjsは、ハンドルバーテンプレートに「members」、「member」、および「membernew」という名前が付いていることを想定しています。
上記に示されていない機能は、ルートをリソースにカスケードすることです。http://emberjs.com/guides/routing/をご覧ください。emberjsチームは、このトピックに関する非常に優れたガイドを作成しました。
したがって、一般的にemberjsは、多くのコーディング行を回避できるいくつかの優れた規則に基づいています。ただし、規則に従う必要があります。より複雑なアプリケーションの場合、これは多くの場合不可能です。