簡體   English   中英

有角度的,在控制器之間共享(填充后?)

[英]angular, sharing between controllers (after it's been populated?)

我正在嘗試與角度控制器之間共享一些信息。 我知道這並不是一件容易的事,我在這里找到了一些很好的例子,但是在引入和更改要共享的數據方面,我有些奇怪。 我嘗試使用發現的其他一些示例來使它起作用,但似乎無法使它起作用,因此我將嘗試盡我所能地解釋清楚。

問題

我想做的很簡單。 我有一些下拉值,我想在控制器之間共享。 因此,無論它在着陸時具有什么值並已被填充,以及何時更改,都將在另一個控制器中顯示。

問題是我建立了一個大工廠,所有控制器都從該工廠調用以填充其輸入,有10個控制器,每個控制器着陸時都必須填充一堆輸入,因此我有一個帶有$ q的工廠.all函數用於存儲在vars中的每個$ http調用,然后是.then調用另一個調用以查看是否保存了任何數據,並將默認值更改為保存的值。 如果可能的話,我希望保留這種方法 我在各處使用它,更改它可能很痛苦。

所以工廠看起來像:

var criteria1 = $http({method: "GET", url: "/crit1"});
var criteria2 = $http({method: "GET", url: "/crit2"});
var criteria3 = $http({method: "GET", url: "/crit3"});

  return {
 critera: $q.all([criteria1 ,criteria2, criteria3])
 }

然后在控制器中執行:

getDefaults.criteria.then(function(data){

//fill out defaults and values for selects with this data

//then get saved data (if any)
$http({
            method: "GET",
            url: "/getsavedData/" + sectionID
        })
        .success(function(data, status, headers, config){
        //if data !null then overrite scopes for defaults
        };

因此,我想做的就是在此控制器上與另一個共享2個選擇列表的值。 提供了這個示例-http://jsfiddle.net/HB7LU/6510/ 但是我似乎無法弄清楚如何將其應用於我正在做的事情。 主要是因為數據是在需要共享數據的控制器外部確定的。 我試圖避免這種情況,但是如果這是最好的方法,那么我可能應該更改它。

我想要輸入來填充,獲取默認值,然后與控制器共享信息(並在更改時共享信息)。 如果可以做與數據綁定的兩種方式類似的事情,但是在控制器之間,那將是理想的選擇,因此我要提供給的控制器始終要提供選擇列表答案的信息。 我為此做了一些努力,這應該很容易,我想我只是在錯誤地考慮它。 任何方向將不勝感激。 感謝您抽出寶貴的時間閱讀!

不確定這是否是您要查找的內容,但是創建一個“服務”並從其他控制器中偵聽它可能會派上用場。 這里提到了類似的東西: https : //stackoverflow.com/a/19469131/2658127

您可以將<input>更改為所需的任何內容。

您可以使用事件。

范圍文件

在此簽出$on$broadcast$emit

在一般用例中, angular.element(catapp).scope()的用法設計為在角度控制器外部使用,例如在jquery事件中使用。

理想情況下,您將在控制器1中編寫一個事件,如下所示:

$scope.$on("myEvent", function (event, args) {
   $scope.rest_id = args.username;
   $scope.getMainCategories();
});

在第二個控制器中,您只需

$scope.initRestId = function(){
   $scope.$broadcast("myEvent", {username: $scope.user.username });
};

編輯:意識到這是兩個模塊之間的通信

您可以嘗試將firstApp模塊作為對firstApp的依賴項secondApp在其中,在那里您聲明angular.module 這樣,您就可以與其他應用通信。

暫無
暫無

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

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