|-- collections
| |-- customers.js
...
|-- models
| |-- customer.js
...
|-- views
| |-- customer
| | |-- create.js
| | |-- edit.js
| | |-- list.js
...
|-- templates
| |-- customers
| | |-- create.html
| | |-- edit.html
| | |-- list.html
...
在initialize
视图的views/customer/list
函数中,collections/customers
提取了一个客户集合(this.collection.fetch
)。在从服务器获取客户集合后完成呈现时,我有一个显示在html表中的客户列表。
当用户点击'编辑'表格行中的按钮会触发事件。该事件的目的是加载customer/edit
视图,以便用户可以从表中更新所选客户。
这是通过Backbone.history.navigate('#customers' + customerId, {trigger:true})
完成的。然后发生了一条路线并且/api/customers/{customerId}
被召唤。
此结构没有问题,它按预期工作。但我认为没有必要去服务器获取客户的详细信息,因为collection
中的views/customers/list
拥有整个客户对象。我可以按如下方式选择一个
var selectedCustomer = this.collection.get(selectedCustomerId)
我的问题是如何将selectedCustomer
对象传递到views/edit
视图,并取消服务器调用以获取客户的详细信息。此外,加载#customers/{customerId}
视图时,哈希值应更改为views/customer/edit
。
答案 0 :(得分:2)
我会考虑更改您的申请流程。不是从listView
获取您的收藏,而是从路由器中获取该收藏并将其传递给您的listView
。然后当您的路由器呼叫您的editView
时,您也可以将该集合传递给editView
,而无需再次获取它。然后,只需从this.collection.get(selectedCustomerId)
致电editView
即可。希望能回答你的问题,但如果没有更好地查看你的代码,我就无法提供更多帮助。