如何将查询字符串数据传递给模板?

时间:2013-11-10 20:07:27

标签: backbone.js chaplinjs

我有以下控制器:

Controller.extend({

    login: function(params,route,query){
        console.log(query.query);
        var model = new LoginModel();
        this.view = new LoginView({ region: 'main', model: model });
    },
});
  1. 如何在控制器操作中获取查询字符串数据?上面我只是采取行动的第三个参数,它包含querystring对象。是否有更好/更好的方法?

  2. 如何将此数据传递给视图,然后传递给模板?

1 个答案:

答案 0 :(得分:0)

  

如何在控制器操作中获取查询字符串数据?以上我只是   采取行动的第三个参数,它包含查询字符串   宾语。有没有更好/更好的方法?

我认为这可能是最干净的方式。

  

如何将此数据传递给视图然后再传递给模板?

来自chaplin.js source code

module.exports = class View extends Backbone.View
  ...
  constructor: (options) ->
      # Copy some options to instance properties.
      if options
        for optName, optValue of options when optName in @optionNames
          this[optName] = optValue
          ...

将选项传递给视图构造函数时:

new LoginView({ region: 'main', model: model });

选项成为视图的属性,因此在视图方法中,您可以调用以下内容:

this.region
this.model

所以你可以传递一个额外的选项:

new LoginView({ region: 'main', model: model, query : query });

并覆盖视图中的函数getTemplateFunction,以动态构建视图网址,并能够传递查询值。

getTemplateFunction: function() {
  // You can access this.query here
  // Get template via Ajax
  // Compile and return template
  return Handlebars.compile(templateStr);
}

您可以找到有关getTemplateFunction here

的完整详情

如果你想要的是向模型添加查询,你可以getTemplateData而不是here

希望它有所帮助!