backbone.js – 使用backboneJS骨干关系requireJS创建嵌套模型

我是BackboneJS的新手,而且我坚持使用带有RequireJS的骨干关系模型的嵌套关系 – 我认为我遇到了循环问题.任何帮助将高度赞赏!

我有以下模型和集合:

/* 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','models/module'
],Backbone,ModuleModel) {

    var ModuleCollection = Backbone.Collection.extend({

        model: ModuleModel,url: 'api/modules'
    });

    return ModuleCollection;
});

当我初始化对象ModuleModel时,它会引发以下错误

Relation=child; no model,key or relatedModel (function (){ parent.apply(this,arguments); },"children",undefined)

我真的坚持下去吗?你能指出我正确的方向吗?提前非常感谢!

解决方法

这看起来像一个范围问题.在ModuleModel初始化期间,它想自己创建一个hasMany关系,但它找不到自己,它会以你所说错误的形式给你带来悲伤:

http://jsfiddle.net/yNLbq

一旦从目前的范围可以找到对象,事情就开始解决了:

http://jsfiddle.net/jDw5e

一个可能的解决方案是为模型提供自己的命名空间,并从当前的范围中获取.

希望这可以帮助.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...