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

前端之家收集整理的这篇文章主要介绍了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

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

希望这可以帮助.

猜你在找的JavaScript相关文章