Ruby on rails 使用Backbone.js加载模型关系
我正在用Rails REST后端编写我的第一个Backbone.js应用程序,有一件事让我感到困惑,那就是模型之间的关系 我正在编写的这个应用程序将有Ruby on rails 使用Backbone.js加载模型关系,ruby-on-rails,rest,model,backbone.js,relationship,Ruby On Rails,Rest,Model,Backbone.js,Relationship,我正在用Rails REST后端编写我的第一个Backbone.js应用程序,有一件事让我感到困惑,那就是模型之间的关系 我正在编写的这个应用程序将有票证和客户端作为模型。我已经设置了票据和客户集合 事实证明,我有几千个客户,我不想在内存中加载他们,相反,当票证引用客户时,我想懒洋洋地加载客户 我尝试了一种非常简单的方法,但显然不起作用,因为Model\fetch()方法是异步的 这是我到目前为止的机票型号(咖啡脚本): 您可以想象,clientName()函数总是返回“undefined un
票证
和客户端
作为模型。我已经设置了票据
和客户
集合
事实证明,我有几千个客户,我不想在内存中加载他们,相反,当票证引用客户时,我想懒洋洋地加载客户
我尝试了一种非常简单的方法,但显然不起作用,因为Model\fetch()
方法是异步的
这是我到目前为止的机票型号(咖啡脚本):
您可以想象,clientName()
函数总是返回“undefined undefined”,因为调用时fetch没有返回
处理这种数据关系的正确方法是什么?请注意,我不介意你退后一步,说我使用了错误的方法,并给我一些建议
任何指针、文章或任何其他内容都将不胜感激。client.fetch()
接受一个success
选项,该选项将在完成时触发。当您启动fetchClient
时,您应该添加加载UI(可以简单地用旋转图标替换按钮),当客户端完成加载时,继续显示名称
在JavaScript中,您可以执行以下操作:
fetchClient: function() {
var client = new Deputy.Models.Client();
client.set({ id: this.get('userid') });
client.fetch({ success: this.fetchClientSuccess });
// Or maybe the following depending on how you set up your code.
// client.fetch({ success: Deputy.Models.fetchClientSuccess });
},
fetchClientSuccess: function(lead, response) {
Deputy.Models.clientName(lead);
}
谢谢你的回复。然而,
subsive.Models.clientName(lead)
到底做了什么?它来自哪里?
fetchClient: function() {
var client = new Deputy.Models.Client();
client.set({ id: this.get('userid') });
client.fetch({ success: this.fetchClientSuccess });
// Or maybe the following depending on how you set up your code.
// client.fetch({ success: Deputy.Models.fetchClientSuccess });
},
fetchClientSuccess: function(lead, response) {
Deputy.Models.clientName(lead);
}