Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何协调BackboneJs视图并在它们之间传递对象? 我有一个BackboneJs应用程序,下面是它的文件结构。 工作代码流_Javascript_Backbone.js_Web Applications - Fatal编程技术网

Javascript 如何协调BackboneJs视图并在它们之间传递对象? 我有一个BackboneJs应用程序,下面是它的文件结构。 工作代码流

Javascript 如何协调BackboneJs视图并在它们之间传递对象? 我有一个BackboneJs应用程序,下面是它的文件结构。 工作代码流,javascript,backbone.js,web-applications,Javascript,Backbone.js,Web Applications,在views/customer/list视图的initialize功能中,客户集合(collections/customers)由this.collection.fetch获取。从服务器获取customers集合后完成渲染时,我在html表中显示了一个客户列表 当用户单击表行中的“编辑”按钮时,将触发一个事件。事件的目的是加载客户/编辑视图,以便用户可以从表中更新所选客户 这是通过Backbone.history.navigate('#customers'+customerId,{trigger

views/customer/list
视图的
initialize
功能中,客户集合(
collections/customers
)由
this.collection.fetch
获取。从服务器获取customers集合后完成渲染时,我在html表中显示了一个客户列表

当用户单击表行中的“编辑”按钮时,将触发一个事件。事件的目的是加载
客户/编辑
视图,以便用户可以从表中更新所选客户

这是通过
Backbone.history.navigate('#customers'+customerId,{trigger:true})
完成的。然后发生了一个路由,调用了
/api/customers/{customerId}

总结 这种结构没有问题,它可以按预期工作。但是我认为没有必要去服务器获取客户的详细信息,因为
views/customers/list
中的
collection
包含整个客户对象。我可以得到如下选择的一个
var selectedCustomer=this.collection.get(selectedCustomerId)

问题
我的问题是如何将
selectedCustomer
对象传递到
views/edit
视图,并消除获取客户详细信息的服务器调用。此外,当“代码>视图/客户/编辑/代码>视图加载时,哈希应该更改为<代码>客户/ {CuuleIDI} /代码>。

< P>我会考虑更改您的应用程序流。不要从
列表视图
获取收藏,而是从路由器获取收藏并将其传递给
列表视图
。然后,当路由器调用您的
editView
时,您也可以将集合传递给
editView
,而无需再次获取。然后,只需从您的
editView
调用
this.collection.get(selectedCustomerId)
。希望这能回答您的问题,但如果没有更好地查看您的代码,我将非常有帮助。

一点代码将非常有帮助。listView是调用editView,还是有主文件同时调用它们?您的主要入口点是什么?@morslima列表视图只导航到
'customers/{customerId}
,然后应用程序的
路由器调用相应的函数并加载编辑视图(
新编辑视图
)。编辑视图从服务器获取数据,并在其初始化函数中传递客户id。绝对同意。通常,获取自己数据的视图将很难管理。宁愿将数据传递到视图
initialize(…)
方法,然后将数据重新用于其他可能需要它们的视图。@PeterWagener,你们都是对的。但这种方法有一个问题。应用程序路由器变得太复杂了。我认为应该使用控制器模块。
|-- collections
|   |-- customers.js
...

|-- models
|   |-- customer.js
...

|-- views
|   |-- customer
|   |   |-- create.js
|   |   |-- edit.js
|   |   |-- list.js
...


|-- templates
|   |-- customers
|   |   |-- create.html
|   |   |-- edit.html
|   |   |-- list.html
...