簡體   English   中英

AngularJS:如何將整個對象傳遞給另一個控制器?

[英]Angularjs: how to pass entire object to another controller?

好的,我是AngularJS的新手。 我正在將一個相當粗糙的應用程序(我已經寫了兩天)從大部分使用jQuery轉換為使用Angular。 [在研究如何減輕我遇到的所有書簽和后退按鈕時,我發現了Angular的“中間流”。

在我的主頁上,有一張搜索結果表。 (如果用戶到達時未傳遞任何參數,則將調用默認搜索來構建表。當然,他們可以使用該頁面上的搜索表單向自己顯示一組不同的結果。)

現在,當用戶單擊某個表項時,我希望該表或多或少“成為”“項詳細信息”頁面上的下拉菜單,可用於從一個表項導航到下一個表項。 (在任何給定時間列表通常少於20個項目。)相同的數據,相同的排序順序,只是在不同的控件中。

除了構建“子”頁面,以便(除了進行Ajax調用以提取項目詳細信息之外),它還運行完全相同的查詢,然后從中構建一個下拉列表……我想也許有一些更有效的方法。

也許將對象的整個對象從搜索結果傳遞到Details控制器? (無論如何,我還必須為用戶實際單擊的任何項目傳遞一個ID,以獲取詳細信息。)

[使用jQuery,我已經在同一頁面上同時構建了下拉列表和結果表...然后只需使用show()和hide()來替代我要顯示的那個。 每當選擇表行或下拉選項時,我都會獲取“項目詳細信息”數據並填充/顯示隱藏的詳細信息div。]

首先,我認為您應該使用某種路由,也許這會有所幫助

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

第二個是,如果要使用多個控制器訪問同一對象,則應對對象使用工廠,而所需要做的就是將工廠注入到控制器中,並且可以從多個控制器訪問同一對象。 這是簡短的教程,很容易理解:

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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM