javascript - 引用 sprockets 的 Backbone rails 模型

标签 javascript ruby-on-rails backbone.js sprockets backbone-forms

我有一个基于 sprockets 的 Rails 构建的主干应用程序,我正在使用 backbone-formsassociations .文件(模型和集合等)按一定顺序包含(多亏了 sprockets )。问题是,当我为一个模型创建表单时,我必须引用另一个模型的构造函数,但它不起作用(因为模型的文件尚未包含在内)。

这段代码会更有意义。所以,这是我的文档模型:

var Document = Backbone.AssociatedModel.extend({
    //...

    schema: {
        description: 'Text',
        tags: {
            type: 'NestedModel',
            model: Tag
        }
    }

    //...
});

这是我的标签模型:

var Tag = Backbone.AssociatedModel.extend({
    //...

    schema: {
        name: {
            type: 'Select',
            options: [1,2,3,4]
        }
    }

    //...
}

问题是 sprockets 在包含文档模型之后包含了我的标签模型,因此 Tag 未定义。

我该怎么办?有解决方法吗?

最佳答案

我推荐使用 RequireJS管理依赖关系。

例如

define([
    'extensions/assocmodel'
], function(AssociatedModel) {
    'use strict';

    var TagModel = AssociatedModel.extend({
        //...

        schema: {
            name: {
                type: 'Select',
                options: [1,2,3,4]
            }
        }

        //...
    });

    return TagModel;
});

然后:

define([
    'extensions/assocmodel',
    'path/to/tag/model'
], function(AssociatedModel, TagModel) {
    'use strict';

    var DocumentModel = AssociatedModel.extend({
        //...

        schema: {
            description: 'Text',
            tags: {
                type: 'NestedModel',
                model: TagModel
            }
        }

        //...
    });

    return DocumentModel;
});

关于javascript - 引用 sprockets 的 Backbone rails 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25055641/

相关文章:

ruby-on-rails - rails 3 : How to include files from "lib" directory when running tests?

ruby-on-rails - cookie 的最大尺寸是多少?

javascript - 如何用 Jasmine 测试(行为驱动开发)来测试这个?

backbone.js - _ 未定义 _.extend(Model.prototype, Events, { 但它在包含的文件中

javascript - 在 AngularJS 中动态注册过滤器?

javascript - 获取父级 json 对象中多个子级的值

javascript - 运行时添加灯光: materials not updated?

ruby-on-rails - ActionCable 在 Rails 5 RESTful API 开发中的使用?

jquery - 主干路由器不会触发事件

javascript - Vue.js @click 在移动设备上的选项中不起作用