我想用角度來分享控制器之間的一些信息。我知道這不是一件難事,我在這裏找到了一些很好的例子,但是我有一些奇怪的情況,就是如何引入和更改我想分享的數據。我試圖申請一些其他的例子,我發現這個工作得到了,但似乎無法得到這個工作,所以我會盡我所能地解釋清楚。角度,在控制器之間共享(在它被填充之後?)
問題
我所試圖做的是非常簡單的。我有一些下拉值我試圖在控制器之間共享。因此,無論登陸時有何價值,以及何時出現價值變化,都會顯示在另一個控制器中。
問題是我建立了一個大工廠,所有的控制器都會調用它來填充它們的輸入,有10個控制器,每個都有一堆必須在着陸時填充的輸入,所以我有一個工廠對存儲在變量中的每個$ http調用使用$ q.all函數,然後調用另一個調用來查看是否保存了任何數據,並將默認值更改爲保存的值。 如果可能,我寧願保留此方法。我到處使用它,改變它可能是一種痛苦。
所以工廠的樣子:
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/。但我似乎無法弄清楚如何將這個應用到我正在做的事情上。主要是因爲數據是在控制器外部確定的,需要從中共享數據。我試圖避免這一點,但如果這是最好的方法,那麼我應該改變它。
我想要填充輸入,得到默認值,然後與控制器共享信息(當它也改變時共享)。如果我可以做類似於2路數據綁定的操作,但是在控制器之間,所以我正在輸入的控制器始終提供選擇列表答案的信息,這將是理想的。我一直在努力爭取這一點,這應該很容易,我想我只是在錯誤地思考它。任何方向將不勝感激。感謝您花時間閱讀!
爲什麼不直接將檢索到的數據設置到服務中的公共屬性上,並讓每個感興趣的控制器都看這些數據? – 2014-09-22 15:52:36
類似[this](http://stackoverflow.com/questions/21452040/angularjs-sharing-methods-between-controllers/21452417#21452417),但你需要設置'var msg = ...'到結果你的$ q.all()。 – 2014-09-22 16:01:03
您是否考慮過使用$ broadcast和$ on? [鏈接](https://docs.angularjs.org/api/ng/type/$rootScope.Scope) – 2014-09-22 19:07:22