gpt4 book ai didi

ruby-on-rails - 使用 Backbone.js 加载模型关系

转载 作者:行者123 更新时间:2023-12-04 06:27:13 25 4
gpt4 key购买 nike

我正在用 Rails REST 后端编写我的第一个 Backbone.js 应用程序,令我困惑的一件事是模型之间的关系。

我正在编写的这个应用程序将以 TicketClient 作为模型。我还设置了 TicketsClients 集合。

原来我有几千个客户,我不想将它们加载到内存中,而是想在工单引用客户时延迟加载。

我尝试了一种非常幼稚的方法,但显然行不通,因为 Model#fetch() 方法是异步的。

到目前为止,这是我的 Ticket 模型(在 CoffeeScript 中):

class Deputy.Models.Ticket extends Backbone.Model

initialize: ->
@fetchClient()

fetchClient: ->
@client = new Deputy.Models.Client()
@client.set id: @get('userid')
@client.fetch()

clientName: ->
first = @client.get('firstname')
last = @client.get('lastname')
"#{first} #{last}"

正如您所想象的,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);
}

关于ruby-on-rails - 使用 Backbone.js 加载模型关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9244166/

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