与RequireJS和Backbone的一对多和一对一的关系

时间:2015-01-18 07:54:41

标签: javascript backbone.js requirejs

我有两个amd模块,其中包含两个模型UserFileUser有许多files,而File有一个User

define('model/user', ['backbone'], function (Backbone) {
    return Backbone.Model.exend({
        getFiles: function () {
            ...
        }
    });
});

define('model/file', ['backbone'], function (Backbone) {
    return Backbone.Model.exend({
        getUser: function () {
            ...
        }
    });
});

已在控制器中创建的所有实体。

define('controller/users', ['backbone', 'model/user'], function (Backbone, User) {
    var users = new Backbone.Collection([], {
        model: User
    });
    users.fetch();
});

define('controller/files', ['backbone', 'model/file'], function (Backbone, File) {
    var files = new Backbone.Collection([], {
        model: File
    });
    files.fetch();
});

我无法弄清楚如何建立这些交叉关系(方法getFilesgetUser)?

我无法model/user需要model/file,这需要model/user。模型不需要控制器。也许应该有第三个模块store包含所有创建的模型?然后他们应该如何到达那里?

1 个答案:

答案 0 :(得分:0)

如果你在前端使用骨干,你可以很容易地在模型层中没有定义关系,而是将它们放在控制器层中。 将相关模型耦合在一起不一定是最好的模式。

但是,如果你想让关系成为模型层的一部分,我会研究诸如http://backbonerelational.org/之类的库