【问题标题】:Backbonejs routing VS emberjs routingBackbonejs 路由 VS emberjs 路由
【发布时间】:2014-01-03 15:02:22
【问题描述】:

这就是我在骨干网中执行路由的方式,在决定调用哪个外部模板之前,首先获取路由及其参数。我觉得这很灵活。

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 中怎么样,我可以这样做吗 - 在决定调用哪个外部模板之前先进行 rout 并获取其参数

我阅读了文档并对其进行了测试。它似乎不太灵活 - 例如,

App.Router.map(function() {
  this.route("about", { path: "/about" });
  this.route("favorites", { path: "/favs" });
});

是否有可能在获取模板之前获取路由和参数,然后获取控制器

如果不是,它似乎与使用Angularjs的情况相同,我最终决定不使用它,因为它在整理参数之前先获取模板

【问题讨论】:

    标签: ruby-on-rails angularjs backbone.js ember.js backbone-routing


    【解决方案1】:

    您可以使用 renderTemplate 钩子在 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);
      }
    });
    

    【讨论】:

    • 谢谢。它给了我使用 emberjs 的希望,因为我不喜欢 angularjs 而backbonejs 并不真正适合我的应用程序...... :)
    【解决方案2】:

    您可以将一个函数与 $route 参数一起传递,以在 angularjs 中获得自定义结果。

    template: function($params) {
      return app.$templateCache.get($params); // or make template yourself from another source
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2013-01-26
    • 2014-11-07
    相关资源
    最近更新 更多