gpt4 book ai didi

requirejs - 如何使 Backbone-Relational (0.8.5) 与 RequireJS 一起工作?

转载 作者:行者123 更新时间:2023-12-04 10:08:22 24 4
gpt4 key购买 nike

经过另一次长时间的研究,某事出来了:-) 似乎问题出在函数“getObjectByName”上。它不能很好地与 requireJS(ADM) 配合使用。目前,我必须设置一个全局变量来解决这个问题。我相信一定有更好的解决方案。

这是我的临时解决方案:

(1)设置全局变量并将搜索模型范围设置为全局(“APP”)

var APP = {};

define(['backbone-relational'], function(){
Backbone.Relational.store.addModelScope(APP);
})

(2) 将您的关系模型导出到全局
APP.YourRelationalModel = YourRelationModel;

它有效,虽然不好......我真的很期待更好的答案。谢谢。

//------------

测试版本:
1.Backbone-Relational 0.8.5 
2.Backbone 1.0.0 and Underscore 1.4.4
3.JQuery 1.8.3
4.RequireJS 2.1.5

代码很简单:(或见 https://github.com/bighammer/test_relational_amd.git)
require.config({

paths : {

js : 'js',
jquery : 'js/jquery-1.8.3',
underscore : 'js/underscore',
backbone : 'js/backbone',
'backbone-relational' : 'js/backbone-relational'
},

shim : {
underscore : {
exports : '_'
},
backbone : {
deps : ['underscore', 'jquery'],
exports : 'Backbone'
},

'backbone-relational' : {
deps: ['backbone']
}
}

});
define(['backbone', 'backbone-relational'], function (Backbone) {

var Child = Backbone.RelationalModel.extend();
var Parent = Backbone.RelationalModel.extend({
relations : [
{
key : 'child',
type : Backbone.HasOne,
relatedModel : 'Child'
}
]

});

var test = new Parent();

});

将上述代码保存在 main.js 中并包含在 index.html 中,如下所示:


它不起作用。有警告信息:
Relation=child: missing model, key or relatedModel (function (){ return parent.apply(this, arguments); }, "child", undefined). 

我阅读了主干关系的源代码,知道命名空间有问题。 Relational-Backbone 找不到“Parent”中定义的 relatedModel(即找不到相关模式:“Child”)。由于我对 javascript 的了解有限,我未能找到解决此问题的解决方案 :-)

谁能帮我这个?

在我提出问题之前,我研究了以下解决方案:

Backbone.RelationalModel using requireJs
Can't get Backbone-relational to work with AMD (RequireJS)
Loading Backbone.Relational using Use! plugin

在这种情况下,他们都没有工作。

最佳答案

不必通过字符串来引用relatedModel,直接引用即可,而不是relatedModel: 'Child' ,只需使用:relatedModel: Child .

而且由于您使用的是 requireJS,因此您可以轻松地从其他文件中引用模型。

define(['backbone', 'models/child', 'backbone-relational'], function (Backbone, Child) {
var Parent = Backbone.RelationalModel.extend({
relations : [{
key : 'child',
type : Backbone.HasOne,
relatedModel : Child
}]
});

var test = new Parent();
});

关于requirejs - 如何使 Backbone-Relational (0.8.5) 与 RequireJS 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15976713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com