在我正在构建的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集合定义吗?
答案 0 :(得分:1)
Backbone允许您按原样(使用空构造函数)或使用数据集合填充Backbone集合。听起来您已经将数据存储在User对象中,并且您希望将此信息推送到Entities.Access
集合。
var access = new Entities.Access(user.access);
我和你在一起,这感觉有点像黑客,但由于Backbone不支持这个,所以你可以做的事情不多。请查看Backbone-Relational或supermodel.js。这些项目提供了比默认实现更好的模型嵌套形式。