Angularjs:如何将整个对象传递给另一个控制器?

时间:2014-07-21 20:49:58

标签: angularjs

好的,我对AngularJS很新。我正在将一个相当粗糙的应用程序(我已经写了几天)从使用大多数jQuery转换为使用Angular。 [我发现Angular“中流”,同时研究如何减轻我遇到的所有书签和后退按钮头痛。]

在我的主页上,我有一个搜索结果表。 (如果用户在没有传递任何参数的情况下到达,则会调用默认搜索来构建表。当然,他们可以使用该页面上的搜索表单来显示不同的结果集。)

现在,当用户点击表项时,我希望该表或多或少“成为”项目详细信息页面上的一个下拉菜单,可用于从一个表项导航到下一个表项。 (在任何给定时间,列表通常少于20个项目。)相同的数据,相同的排序顺序,只是在不同的控件中。

而不是构建那个“Child”页面(除了进行Ajax调用以提取项目详细信息)之外,它运行完全相同的查询AGAIN,然后构建一个下拉列表...我想也许有一些更有效的方法来做到这一点。

或许,将搜索结果中的整个对象对象传递给Details控制器? (我也不得不为用户实际点击的任何项目传递一个id以获取详细信息。)

[使用jQuery,我在同一页面上构建了下拉列表和结果表...然后只需使用show()和hide()来交替显示哪一个。每当选择表格行或下拉选项时,我都会获取项目详细信息数据并填充/显示隐藏的详细信息div。]

1 个答案:

答案 0 :(得分:0)

首先,我认为你应该使用某种路由,也许这可能会有所帮助

https://github.com/angular-ui/ui-router

第二个,如果你想用多个控制器访问同一个对象,你应该将factory与你的对象一起使用,而你所需要的只是将那个工厂注入你的控制器,你将可以从多个访问同一个对象控制器。这是简短的教程,很容易理解:

https://egghead.io/lessons/angularjs-sharing-data-between-controllers

第三个选项,但它不好,是发出或广播事件并从一个控制器发送对象,在另一个控制器中你可以为该事件设置一个监听器,在这里你可以找到更多的信息:

http://www.theroks.com/angularjs-communication-controllers/

http://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/