微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

希望这可以帮助.

原文地址:https://www.jb51.cc/js/153032.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐