这就是我在backbonejs中执行路由的方式,在决定调用哪个外部模板之前首先获取路由及其参数。我发现这非常灵活。
var Router = Backbone.Router.extend({
routes: {
//'': 'renderBasic',
':module/:method/': 'renderDynamicViewPageBasic',
':module/:branch/:method/': 'renderDynamicViewPageBranch',
':module/:branch/:method/set:setnumber/page:pagenumber/': 'renderDynamicViewPagePager',
':module/:branch/:method?set=:setnumber&page=:pagenumber': 'renderDynamicViewPagePager'
},
renderDynamicViewPageBasic: function (module,method) {
$(el).html(Handlebars.getTemplate('template1')(data));
},
renderDynamicViewPageBranch: function (module,branch,method) {
$(el).html(Handlebars.getTemplate('template2')(data));
},
renderDynamicViewPagePager: function (module,branch,method,setnumber,pagenumber) {
$(el).html(Handlebars.getTemplate('template3')(data));
}
});
在 emberjs 中怎么样,我可以做同样的事情 - 在决定调用哪个外部模板之前先进行路由并获取其参数?
我阅读了文档并进行了测试。它似乎不太灵活 - 例如,
App.Router.map(function() {
this.route("about", { path: "/about" });
this.route("favorites", { path: "/favs" });
});
是否可以在获取模板之前获取路由和参数,然后获取 Controller ?
如果没有,它似乎与使用 Angularjs 的情况相同,我最终决定不使用它,因为它在排序参数之前先获取模板。
最佳答案
您可以使用 renderTemplate
Hook 在 EmberJs 中定义模板“post params”,您可以在其中自定义要使用的模板。
http://emberjs.jsbin.com/oXUqUJAh/1/edit
App.Router.map(function() {
this.route('apple', {path: 'apple/:id'});
});
App.AppleRoute = Ember.Route.extend({
model: function(params) {
return {coolProperty: params.id};
},
renderTemplate: function(controller, model) {
// send in the template name
this.render(model.coolProperty);
}
});
关于ruby-on-rails - Backbonejs 路由 VS emberjs 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20906508/