标签: backbone-relational

使用Backbone Marionette和Relational的复合视图

我已经使用Marionette几个星期了,刚刚发现了Backbone Relational,所以我想弄清楚如何整合这两者.理想情况下,我想使用复合视图来呈现这样构造的数据,其中每个'i​​tem'都有自己的项视图:

list : {
  name : 'List 1',
  items : [
    item1 : {
      name : 'Item 1',
      id : 1
    },
    item2 : { ... }
    item3 : { ... }
  ]
}
Run Code Online (Sandbox Code Playgroud)

通常使用复合视图,您需要拥有一组模型,它们将迭代以呈现每个项目.通过关系,我只有一个模型(列表),并且该模型中有一个集合(项目).是否有可能使用Marionette的视图渲染出来,或者我是否需要使用简单的Backbone视图并自己处理渲染和迭代?

backbone.js backbone-relational marionette

7
推荐指数
1
解决办法
3324
查看次数

Backbone-relational无法实例化两个RelationalModel对象

我正在尝试实现BackboneRelational并继续获取

"无法实例化多个Backbone.RelationalModel,每个类型具有相同的id!"

class App.Models.User extends Backbone.RelationalModel
  urlRoot : '/api/users'
  idAttribute: 'id'

  relations: [
    type: Backbone.HasMany
    key: 'plots'
    relatedModel: 'App.Models.Plot'
    collectionType: 'App.Collections.Plots'
    includeInJSON: false
    reverseRelation:
      key: 'user_id',
      includeInJSON: 'id'
  ]


class App.Models.Plot extends Backbone.RelationalModel
  urlRoot : '/api/plots'
  idAttribute: 'id'
Run Code Online (Sandbox Code Playgroud)

如果我切换其中一个模型来扩展Backbone.Model我可以实例化这两个模型,但是我得到了关系功能被破坏的所有警告.

我想要实现以下目标:

 plot = new App.Models.Plot({id : 700})
 plot.fetch()
 plot.get('user')
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

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

7
推荐指数
1
解决办法
3256
查看次数

骨干关系 - 无法实例化多个,,,

我一直在使用骨干关系(https://github.com/PaulUithol/Backbone-relational)来构建我的应用程序,因为我有一个模型(Room),附带了许多其他模型:

  • 房间有很多评论
  • 房间属于Location

正如您在本期中所看到的,我一直收到错误

Error: Cannot instantiate more than one Backbone.RelationalModel with the same id per type

每当我更改View或重新加载Collection时.

现在我知道有一个线程在这里他们建议使用在那里findOrCreate,但我没有单独访问模型,但我不使用Collection.fetch.有没有解决这个问题的方法?

backbone.js backbone-relational

7
推荐指数
1
解决办法
2196
查看次数

如何使Backbone-Relational(0.8.5)与RequireJS一起工作?

经过另一项长期研究,出来了:-)似乎问题是关于函数"getObjectByName".它不能与requireJS(ADM)一起使用.目前,我必须设置一个globel var来解决问题.我相信一定有更好的解决方案.

这是我的临时解决方案:

(1)设置全局var并将搜索模型范围设置为全局("APP")

var APP = {};

define(['backbone-relational'], function(){
    Backbone.Relational.store.addModelScope(APP);
})
Run Code Online (Sandbox Code Playgroud)

(2)将您的关系模型导出到全局

APP.YourRelationalModel = YourRelationModel;
Run Code Online (Sandbox Code Playgroud)

它有效,虽然不好......我真的很期待一个更好的答案.谢谢.

// ------------

测试版本:

1.Backbone-Relational 0.8.5 
2.Backbone 1.0.0 and Underscore 1.4.4
3.JQuery 1.8.3
4.RequireJS 2.1.5
Run Code Online (Sandbox Code Playgroud)

代码非常简单:(或参见https://github.com/bighammer/test_relational_amd.git)

require.config({

paths : {

    js                    : 'js',
    jquery                : 'js/jquery-1.8.3',
    underscore            : 'js/underscore',
    backbone              : 'js/backbone',
    'backbone-relational' : 'js/backbone-relational'
},

shim : {
    underscore : {
        exports : '_'
    },
    backbone   : {
        deps    : ['underscore', 'jquery'],
        exports : 'Backbone'
    },

    'backbone-relational' : {
        deps: ['backbone'] …
Run Code Online (Sandbox Code Playgroud)

requirejs backbone-relational

7
推荐指数
1
解决办法
3435
查看次数

与Backbone-Relational实现多对多关系

我有一个简单的应用程序,它定义了两个类,a Person和a PersonGroup,其中存在多对多关系.一个人可以没有任何组,或者被分配给所有组,以及介于两者之间的任何组.

backbonerelational.org上的示例建议使用中间模型来实现多对多关系,但是我不能将此模式用于获取(反序列化)和保存(序列化).

我想要做的是使用Backbone来反序列化类似于以下内容的JSON:

{
    People:
    [
        {
            "ID": 1,
            "Name": "John"
        },
        {
            "ID": 2,
            "Name": "Bob"
        },
        {
            "ID": 3,
            "Name": "Tim"
        },
    ],
    PeopleGroups:
    [
        {
            "ID": 1,
            "Name": "Owners",
            "People":
            [
                1,
                2
            ],
        },
        {
            "ID": 2,
            "Name": "Everyone",
            "People":
            [
                1,
                2,
                3
            ],
        },
    ]
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Knockback/Knockout进行数据绑定,所以问题是我需要能够通过引用访问关系.除非我能创建一个Knockback.CollectionObservable来包装集合并将ID解析为引用,否则ID数组对我没有任何帮助.

javascript backbone.js backbone-relational knockback.js

7
推荐指数
1
解决办法
2557
查看次数

骨干关系事件没有解雇?

class TheModel extends Backbone.RelationalModel
    relations:[
        type: Backbone.HasMany
        key: 'subModels'
        relatedModel: SubModel
        collectionType: SubModels
        reverseRelation:
            key: 'TheModel'
    ]

themodel = new the TheModel({subModels:[{#stuff},{#stuff},{#stuff}]})
Run Code Online (Sandbox Code Playgroud)

我有createModels,所以themodel.get('subModels')返回一组模型.


现在,如果我将更改的subModel数据传递给 mymodel

themodel.set({subModels:[{changedstuff},{stuff},{stuff}]})
Run Code Online (Sandbox Code Playgroud)

不应该themodel抛出一个change事件?它不适合我.


如果我将相同的数据传入,则更是如此 mymodel

themodel.set({subModels:[{samestuff},{samestuff},{samestuff}]})
Run Code Online (Sandbox Code Playgroud)

themodel.attributes.subModels投掷addupdate事件,即使没有什么是新的.

我不确定为什么会出现这些问题,任何帮助都会很棒,谢谢!!!!

javascript model coffeescript backbone.js backbone-relational

6
推荐指数
1
解决办法
1461
查看次数

Backbone-relational:除非与外键相同,否则关联键不起作用

我正在尝试让骨干关系插件与任务和消息之间的关联起作用.(任务有很多消息).

从标准rails/activerecord站点提取信息,该站点具有task_id字段作为外键.

问题是,除非我在反向关系中将密钥设置为"task_id",否则骨干关系不会在任何消息上填充"消息"字段,但这意味着,当从任务模型访问任务时在消息模型中,task_id字段填充了实际的任务对象,而不是被覆盖的'task_id'整数.

我猜有一种简单的方法可以将task_id指定为用于确定父任务的外键,但是将键表示的对象放在另一个字段中(例如,消息对象上的'task')...但是我无法弄清楚如何.任何想法都赞赏.代码如下

class Backbonescaffolddemo.Models.Task extends Backbone.RelationalModel
  paramRoot: 'task'

  relations: [{
    type: Backbone.HasMany,
    key: "messages",
    relatedModel: "Backbonescaffolddemo.Models.Message",
    collectionType: "Backbonescaffolddemo.Collections.MessagesCollection",
    includeInJSON: true
    reverseRelation: {
      key: "task_id"
      includeInJSON: true
    }
  }]
Run Code Online (Sandbox Code Playgroud)

javascript coffeescript backbone.js backbone-relational

6
推荐指数
1
解决办法
2516
查看次数

Backbone-Relational和Django-Tastypie:多对多字段操作示例

可能有人提供了通过django-tastypie和骨干关系来运行django.db模型实例的多对多字段的示例吗?现在可以使用中间模型了.

from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=42)    

class Book(models.Model):
    authors = models.ManyToManyField(Author, related_name='books', through='Authorship')
    title = models.CharField(max_length=42)

class Authorship(models.Model):
    author = models.ForeignKey(Author)
    book = models.ForeignKey(Book)
Run Code Online (Sandbox Code Playgroud)

以下是tastypie资源的配置:

from tastypie import fields, resources

class AuthorResource(resources.NamespacedModelResource):
    books = fields.ToManyField('library.api.resources.AuthorshipResource', 'books')

    class Meta:
        resource_name = 'author'
        queryset = models.Author.objects.all()

class BookResource(resources.NamespacedModelResource):
    authors = fields.ToManyField('library.api.resources.AuthorshipResource', 'authors')

    class Meta:
        resource_name = 'book'
        queryset = models.Book.objects.all()

class AuthorshipResource(resources.NamespacedModelResource):
    author = fields.ToOneField('library.api.resources.AuthorResource', 'author')
    book = fields.ToOneField('.api.resources.BookResource', 'book')

    class Meta:
        resource_name = 'authorship'
        queryset = models.Authorship.objects.all() …
Run Code Online (Sandbox Code Playgroud)

many-to-many tastypie backbone-relational

6
推荐指数
0
解决办法
1002
查看次数

_.bindAll(this)和Uncaught TypeError:无法读取backbone-relation.js中未定义的属性'idAttribute'

我有两个模型(用户和任务),它们是实例Backbone.RelationalModel.

这两个模型的关系如下:

// Task model

    var Task = Backbone.RelationalModel.extend({

        relations: [
            {
                type: 'HasOne',
                key: 'user',
                relatedModel: User
            }
        ],

        urlRoot: 'someUrl'

    });
Run Code Online (Sandbox Code Playgroud)

然后我有一个代码看起来像这样的集合:

var FollowerCollection = Backbone.Collection.extend({
    initialize: function () {
         _.bindAll(this);
    }
    model: User
});


var User = Backbone.RelationalModel.extend({

});
Run Code Online (Sandbox Code Playgroud)

当我在FollowerCollection上进行提取时,我收到以下错误:

 Uncaught TypeError: Cannot read property 'idAttribute' of undefined
Run Code Online (Sandbox Code Playgroud)

在骨干关系的1565行 backbone-relation version 0.5.0


这里是一段backbone-relation.js的代码

if ( !( model instanceof Backbone.Model ) ) {
    // Try to find 'model' in Backbone.store. If it already exists, set the …
Run Code Online (Sandbox Code Playgroud)

backbone.js backbone-relational

6
推荐指数
1
解决办法
3035
查看次数

骨干关联与骨干关系

我一直在寻找有关如何在Backbone中建立关系的信息,并且遇到了以下两个不错的插件:

两者似乎都存在了两年多,似乎很稳定.然而,Backbone-relational一枝独秀对Backbone-associations在以下条款:

  • 提供几乎所有关系,就像one-to-one, one-to-many, many-to-one我们在数据库中一样
  • 好看的文档(类似于Backbone.js)乍一看

既然,我没有时间广泛浏览这两个插件,我想从有经验的人那里了解下面的事情:

  • 两者都支持AMD(如Requirejs)吗?
  • 使用Ruby on Rails等后端服务器的插件有多容易?
  • 实现多态关系有多容易?

javascript jquery backbone.js backbone-relational backbone-associations

6
推荐指数
1
解决办法
670
查看次数