backbone.js视图和会话变量

时间:2012-08-17 20:15:18

标签: templates backbone.js underscore.js

我实现了一个项目集合(模型,集合,集合视图,单个项目的视图和模板文件)。除此之外,我还有一些会话变量(例如用户凭据/会话属性/权限)。我想根据用户权限显示每个项目的不同字段和选项(普通用户只能查看它们,管理员可以编辑/删除等)。这样做最干净的方法是什么?通过视图构造函数传递会话或向每个模型添加会话结构的引用的任何方式似乎都不正确。这听起来像我想要的是让这些会话结构全局化并希望从我的视图模板中访问它,但我怀疑这是正确的方法。

由于

1 个答案:

答案 0 :(得分:2)

我遇到同样问题的方法是通过权限检查设置模型和集合,然后在模型类中实现逻辑,如下所示:

PermissionModel = Backbone.Model.extend({

  hasPermission: function(permission){
    // pessimistic default implementation, override in inherited model classes
    return false;
  }

});

从此模型继承模型,然后在应用程序相对简单时使用全局标志检查权限逻辑,如果更复杂则使用某种ACL。例如

hasPermission: function(permission){
  switch (permission) {
    case "read":
      return true;
    case "write":
      return window.app.user.isAdmin(); //app.user is defined in the app initialization
    default:
      return false;
  }
}

在模板中,您可以使用此逻辑。如果使用Handlebars,则可以定义模板助手:

{{#ifPermission model "read"}}You have permission{{/ifPermission}}