通过Global Object设置Backbone Marionette模型

时间:2013-08-04 21:10:28

标签: javascript rest web-applications backbone.js marionette

在我正在构建的Backbone.Marionette应用程序中,我们有一个身份验证,它返回一个user对象,我们反过来隐藏在App.User(所以它不是真正的全局)。

我遇到的问题是我不想调用API端点来访问返回的user对象的各种属性。我现在正在处理的具体用例是返回的user对象包含有关用户被允许访问的应用程序中的哪些模块的数据(不用担心安全性,我们已经澄清说可以用户可以在他们的控制台中欺骗var以获得对UI的访问权限,服务层将阻止他们在这样的区域中的行为变得有意义。)

我的目标是避免每次需要访问users.appAccess(一个列出我可以访问的模块的假设数组)的场景,以便将其实例化为模型,我必须调用URL / API端点通过在集合的定义中声明它,如下所示:

    Entities.Access = Backbone.Collection.extend({
        url: 'http://example.com/users/:id/access/',
        }
    });

从上面的代码中删除url属性会引发错误,我可以向它传递一个返回空的函数,但这不会很好用

   var access = new Entities.Access() 
   access.fetch(); 

尝试将获取的集合传递给Marionette CollectionView时。我应该简单地避免使用fetch()方法并保持它是典型的(虽然是hack-ish)Backbone集合定义吗?

1 个答案:

答案 0 :(得分:1)

Backbone允许您按原样(使用空构造函数)或使用数据集合填充Backbone集合。听起来您已经将数据存储在User对象中,并且您希望将此信息推送到Entities.Access集合。

var access = new Entities.Access(user.access);

我和你在一起,这感觉有点像黑客,但由于Backbone不支持这个,所以你可以做的事情不多。请查看Backbone-Relationalsupermodel.js。这些项目提供了比默认实现更好的模型嵌套形式。