javascript - 主干网获取相关模型

标签 javascript backbone.js

我正在开发一个 Backbone 应用程序,但到目前为止我读到的所有内容都是关于显示项目列表(例如 TODO 列表)或单个项目。

现在我有用户,每个用户都有一个技能列表(几乎就像任何游戏一样)。我可以轻松获取所有用户或单个用户,技能也是如此,但如果我想获取给定用户的所有技能怎么办?我该怎么做?

我考虑过使用集合的新实例向用户添加一个属性,如下所示:

var Users = Backbone.Model.extend({
  skills: new Skills({ user: this })
});

var Skills = Backbone.Collection.extend({
  model: Skill,
  url: '/someUrl',
  initialize: function (options) {
    // fetch all skills from an user
    this.fetch({ data: { user: options.user.get('id') } });
  }
});

但是我对 Backbone 没有太多经验,而且我不太喜欢这个想法,而且请求看起来像 /someUrl?user=1 ,我更愿意避免使用 /someUrl/user/1 会好得多。

我还注意到BackboneRelational但我还没有真正尝试过,这对于我的问题来说似乎有点矫枉过正,但也许我错了。

我应该采取什么方法来获取所有用户技能?提前致谢。

最佳答案

我强烈建议您查看此post ,肯定你会找到答案。如果很短,您可能有以下方法,无需任何额外的插件并构建嵌套模型:

期望以下 json:

{
   name: 'Gorbachov',
   age: '75',
   skills: [
       {
           name: 'kalashnikov'
       }, 
       {
           name: 'vodka'
       },
       {
           name: 'balalaika'
       }
   ]
}

让我们更新用户模型:

User = Backbone.Model.extend({
    initialize: function(){
        var skills = this.get("skills");
        if (skills){
            this.skills = new Skills(skills);
            this.unset("skills");
        }
    }        
})

然后创建 SkillsCollection:

SkillsCollection = Backbone.Collection.extend({
    model: Skill
})

技能模型:

Skill = Backbone.Model.extend({
    defaults: {
        name: 'unnnamed'
    }
})

关于javascript - 主干网获取相关模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25232982/

相关文章:

backbone.js - View 应该跟踪他们的模型吗?

javascript - 记录 sub/pub 的好方法是什么?

javascript - 读取从 API REST 返回的 JSON 对象

javascript - 如何在单击时关闭其他子菜单

javascript - 组件出现错误 this.getView 不是函数

javascript - Requirejs + Backbone.js : TypeError: Can't pass in the router - Router is not a function?

backbone.js - 如何在Backbone模型获取调用期间触发错误?

javascript - Jquery 对话框模式问题

javascript - 如何处理嵌套上下文?

javascript - 将输入标签值作为 href 参数传递给