我很困惑如何使用新的路由器方法连接 socket 。
index.html:
...
<script type="text/x-handlebars" data-template-name="application">
<h4>The application handelbar</h4>
{{! outlet 1}}
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="index">
<h4>The index handelbar</h4>
{{! outlet 2 and 3}}
{{outlet nav}}
{{outlet main}}
</script>
<script type="text/x-handlebars" data-template-name="main">
<h4>The main handelbar</h4>
</script>
<script type="text/x-handlebars" data-template-name="nav">
<h4>The nav handelbar</h4>
</script>
...
app.js:
...
App.Router.map(function(match) {
this.resource("index", { path: "/" });
this.route("test");
});
App.IndexController = Ember.Controller.extend({
});
App.IndexView = Ember.View.extend({
templateName: 'index'
});
...
此代码呈现 outlet-1。
问题:
谢谢
喵
最佳答案
您需要使用 renderTemplate 方法(或 renderTemplates 方法,取决于您的构建)在路由处理程序中指定这些内容。
你没有看到的是 Ember 已经为你设置了很多默认值。事实上,Ember 设置的默认值允许您省略整个路由处理程序。
App.Router.map(function(match) {
this.resource("index", { path: "/" });
this.route("test");
});
App.IndexRoute = Ember.Route.extend({
renderTemplate: function() {
this.render();
/* this is the default, it will basically render the
default template, in this case 'index', into the
application template, into the main outlet (i.e. your
outlet 1), and set the controller to be IndexController.
*/
}
});
你想要的是在 renderTemplate 函数中渲染额外的模板,像这样:
renderTemplate: function() {
this.render("index");
// this renders the index template into the primary unnamed outlet.
this.render("navtemplate", {outlet: "nav"});
// this renders the navtemplate into the outlet named 'nav'.
this.render("main", {outlet: "main"});
// this renders the main template into the outlet named 'main'.
}
希望这可以帮助。
关于ember.js - 新的 ember.js 路由 : how to connect outlets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14365749/