标签: backbone-relational

使用Backbone-relational在Backbone中创建嵌套模型

我想使用backbone-relational在我的backbone.js应用程序中使用嵌套模型.

我已经能够按照文档中的示例来创建嵌套对象(例如,一对多关系).但是我不明白如何以更新上层对象的方式绑定较低级别的元素.我认为一个有用的应用程序将是一个非常有用的教程.

所以我的问题是:如何使用以下方式扩展Todos教程backbone-relational:

  • 可以为每个项目添加/删除子项目
  • 双击任何子项编辑它(就像原来的Todo示例一样)
  • 点击某个项目会隐藏/显示其子项目
  • 子项不是单独获取的,而只是Todo项的数组属性

更新:我为这个问题创建了一个jsfiddle.到目前为止,我有:

  • 导入了上面提到的Todo示例
  • 创建了一个TodoSubitem模型和一个TodoSubitemList集合
  • 改变Todo模型以扩展RelationalModel而不是Model与之HasMany相关TodoSubitem
  • subitem-template在html代码中添加了一个

但我仍然不确定如何:

  • 添加输入字段subitems仅在单击Tododiv 时显示
  • 将子项数据作为Todo对象的属性,但仍然TodoSubitemView将DOM元素绑定到它们(例如<li>标签).

javascript backbone.js backbone-relational

12
推荐指数
1
解决办法
1万
查看次数

我在哪里可以找到一些好的骨干关系教程?

我正在学习backbone.js和它周围的整个微观世界!但是我在一个插件上仍然令人惊叹:Backbone-Relational.

github上,文档太短了,不适合初学者!这就是我的感受!

有人有关于骨干关系的教程吗?我搜索谷歌但我真的没有找到朝这个方向发展的东西.

非常感谢你帮助我!

backbone.js backbone-relational

11
推荐指数
2
解决办法
4243
查看次数

如何处理backbone.js中的关系

我对如何设计关于模型关系的backbone.js应用程序感到困惑.

如果我有一个事件模型,它有几个关系,比如一个用户模型可以有很多事件,而事件模型又可以有很多注释和参与.用户可以有很多评论,参与可以有一个用户和一个事件.哇,真糟糕!

Event has many Comments
Event has many Participations
Event has one User

User has many Events
User has many Participations
User has many Comments

Comment has one Event
Comment has one User

Participation has one User
Participation has one Event
Run Code Online (Sandbox Code Playgroud)

Okey,所以我的想法是在用户加载页面时加载事件列表,当用户点击事件时加载有关该事件的其余信息(评论,参与和用户).

所以问题是,我应该使用某种全局变量来保存所有事件,用户等等,当我从服务器获取信息时把它放在那里(并在我从服务器上抓取东西之前检查那里),也许在某些一种localstorage(以及如何使用骨干关系?).

我的另一个想法是让每个事件都有自己独立的数据,这个问题是我每次点击一个事件时都会发送冗余数据.

你推荐什么方式?

谢谢!

javascript rest backbone.js backbone-relational

11
推荐指数
2
解决办法
5759
查看次数

使用jasmine测试骨干关系模型

假设我有两个简单的fixture文件,一个用于用户(1),另一个用于消息(2).

消息的骨干模型如下(3).

如果我加载"消息夹具",我想在消息模型中指定有关用户的相关信息.
使用jasmine测试套件在规范视图(4)中激活此目标的正确方法是什么?
有关详细信息,请参阅(4)中的注释.


(1)

// User Fixture
beforeEach(function () {
    this.fixtures = _.extend(this.fixtures || {}, {
        Users: {
            valid: {
                status: 'OK',
                version: '1.0',
                response: {
                    users: [
                        {
                            id: 1,
                            name: 'olivier'
                        },
                        {
                            id: 2,
                            name: 'pierre',
                        },
                        {
                            id: 3,
                            name: 'george'
                        }
                    ]
                }
            }
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

(2)

// Message Fixture
beforeEach(function () {
    this.fixtures = _.extend(this.fixtures || {}, {
        Messages: {
            valid: {
                status: 'OK',
                version: '1.0',
                response: {
                    messages: [
                        { …
Run Code Online (Sandbox Code Playgroud)

javascript backbone.js jasmine backbone-relational

11
推荐指数
1
解决办法
748
查看次数

骨干关系有很多最佳实践

我是Backbone-relational的新手,我不确定使用HasMany的正确方法是什么.

我有一个Parent模型有很多children("很多"我的意思是成千上万的孩子).为了避免性能问题,我查询孩子通过自己的外键:/child/?parent=1,而不是创造了巨大的名单child_idsParent.但似乎这不是Backbone关系工作的方式.

所以我想知道处理这个问题的正确方法是什么.

1,更改我的json api以包含父级中的子ID列表,然后发送数千个ID作为Backbone-relational建议:

url = function(models) {
  return '/child/' + ( models ? 'set/' + _.pluck( models, 'id' ).join(';') + '/' : '');
}
// this will end up with a really long url: /child/set/1;2;3;4;...;9998;9999
Run Code Online (Sandbox Code Playgroud)

2,在Backbone-relational中覆盖很多方法,让它处理这种情况.我的第一个想法是:

relations: [{
  collectionOptions: function(model){
    // I am not sure if I should use `this` to access my relation object 
    var relation = this;
    return {
      model: relation.relatedModel,
      url: function(){
        return relation.relatedModel.urlRoot + …
Run Code Online (Sandbox Code Playgroud)

foreign-key-relationship has-many backbone.js backbone-relational

11
推荐指数
1
解决办法
1352
查看次数

如何使用Backbone.js从嵌套的JSON构建集合/模型

我是Backbone.js的新手

我有一个JSON,如图所示!我看到一些关于Backbone-relational的答案,但仍然没有明白这一点!

如何将此JSON转换为Backbone.js集合/模型?

我用代码更新,但它不像预期的那样工作!我做的时候看不到模特:

我的结构是:

[0]:是模型的集合

[clefs] + ... + [Rest]:是模型的集合

(谱号)=> [0] + ... + [9]:是模型(标题包含字符串,路径也是)

非常感谢!!

编辑(10.01.12):

我的解决方案

window.initModel = Backbone.Model.extend({
  defaults: {
    "title": "",
    "path": ""
  }
});
window.CustomCollection = Backbone.Collection.extend({
  model: initModel
});
window.Init = Backbone.Model.extend({
  url : function(){
    return  "/api/data.json"      
  },

  parse: function(response) {

    clefs = new CustomCollection();
    clefs.add(response.clefs);        
    this.set({clefs: clefs});

    .....

    rests = new CustomCollection();
    rests.add(response.rests);        
    this.set({rests: rests});
} 
});
Run Code Online (Sandbox Code Playgroud)

这也帮助了我!

嵌套数组

javascript backbone.js backbone-relational

10
推荐指数
1
解决办法
2万
查看次数

使用backboneJS + backbone-relational + requireJS创建嵌套模型

我是BackboneJS的新手,我使用带有RequireJS的Backbone关系模型的嵌套关系 - 我想我遇到了循环问题.任何帮助将非常感谢!

我有以下型号和系列:

 /* Module Model at models/module*/
define([
'jquery', 
'underscore', 
'backbone',
'backboneRelational',
], function($, _, Backbone) {

    var ModuleModel = Backbone.RelationalModel.extend({

        urlRoot: 'api/module',
        _radius: 50,
        relations: [{
            type: Backbone.HasMany,
            key: 'children',
            relatedModel: 'ModuleModel',
            collectionType: 'ModuleCollection',
            reverseRelation: {
                key: 'parent_id',
                includeInJSON: 'id' 
            }
        }],
        url: function() {
            return this.id? 'api/module/' + this.id : 'api/module';
        }
    });
    return ModuleModel;
});

/* Module Collection */
define([
'jquery',
'underscore', 
'backbone', 
'models/module'
], function($, _, Backbone, ModuleModel) {

    var ModuleCollection = Backbone.Collection.extend({

        model: …
Run Code Online (Sandbox Code Playgroud)

requirejs backbone.js backbone-relational

10
推荐指数
1
解决办法
4685
查看次数

填充了对象的外键

我想使用骨干关系在两个模型User和Task之间建立关系.

两种模型之间的关系如下:

taskModel.creator_id = userModel.id   
Run Code Online (Sandbox Code Playgroud)
// TaskModel
var TaskModel = Backbone.RelationalModel.extend({

    relations: [
        {
            type: Backbone.HasOne,
            key: 'creator',
            keySource: 'creator_id',
            relatedModel: Users
        }
    ],

    // some code
});
Run Code Online (Sandbox Code Playgroud)
// Task collection
var TaskCollection = Backbone.Collection.extend({

    model: TaskModel,

    // some code

});
Run Code Online (Sandbox Code Playgroud)
// User Model
var User = Backbone.RelationalModel.extend({
    // some code
});
Run Code Online (Sandbox Code Playgroud)

其实问题出在collection.models上,请看附图:

请检查这个jsfiddle:http://jsfiddle.net/2bsE9/5/

var user = new User(),
    task = new Task(),
    tasks = new Tasks();

task.fetch();
user.fetch();
tasks.fetch();

console.log(user.attributes, task.attributes, tasks.models);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

PS:

实际上我使用requireJs来获取UserModel …

javascript backbone.js backbone-relational

9
推荐指数
1
解决办法
1750
查看次数

了解Marionette for Backbone.js的布局

我想我可能对如何Marionette.Layout使用有一个根本的误解.

我正在尝试这样的事情:

在此输入图像描述

布局包括两个Marinotette.ItemView:"爆炸" ItemView和"PopStar" ItemView.此布局旨在始终包含这些视图,因此我尝试这样做:

var TheLayout = Backbone.Marionette.Layout.extend({
    template: '#the=layout-template',
    regions: {
        explode: '#explode-region',
        popstar: '#popstar-region'
    }
    initialize:function(options){
        _.bindAll(this);

        var explodeView = new ExplodeView();
        this.explode.show(explodeView);        // <-- This throws and exception because the regions are not available yet

    }
})
Run Code Online (Sandbox Code Playgroud)

但看起来区域在渲染布局之后才可用.我this.render()在添加视图之前尝试过调用,但这没有用.我很确定这里的根本问题是我在错误的情况下应用布局.

在这种情况下我该怎么做?什么时候使用正确Marionette.Layout

谢谢!

javascript backbone.js backbone-relational backbone-views marionette

8
推荐指数
1
解决办法
4428
查看次数

作业完成后,NULL的RelationalModel关系字段

我得到了一个我无法弄清楚的wtf问题.我解释 :

我有一个名为Product的模型:

var Product = Backbone.RelationalModel.extend(
{
    urlRoot: Backbone.rootApiUrl + '/products',
    defaults: {
        id: '',
        name: '',
        description: '',
        current_price: '',
        categories: '',
        duration: '',
        shipping_cost: '',
        start_date: '',
        user_id: null,
        is_buy_it_now: ''
    },

    relation: [{
        type: Backbone.HasOne,
        key: 'user_id',
        relatedModel: User,
        autoFetch: true
    }]
});
Run Code Online (Sandbox Code Playgroud)

我的字段user_id是一个用户的外键(也是Backbone中的模型):

var User = Backbone.RelationalModel.extend(
{
    urlRoot: Backbone.rootApiUrl + '/users',
    defaults: {
        id: '',
        name: '',
        email: '',
        firstname: '',
        lastname: '',
        password: '',
        card_nb: '',
        cart_total: ''
    }
});
Run Code Online (Sandbox Code Playgroud)

我的获取关系在每个单独的模型中都能很好地工作 …

javascript model-view-controller relational-model backbone.js backbone-relational

8
推荐指数
1
解决办法
175
查看次数