大圖是 - 我打算在一個地方得到一個ajax調用,然後發送給我的所有控制器(大約有8個),並根據字符串答案設置一個顯示/隱藏在所有這些。這似乎很簡單,但我在解決問題方面遇到了一些麻煩。我能夠弄清楚如何在2個控制器之間刪除一個json對象,但這有點不同,所以我想我可能會以不正確的方式應用先前的邏輯。在控制器之間共享一個ajax repsonse
我設立了工廠,像這樣
.factory('statusCheck', ['$http', function ($http) {
var currentId = self.location.search;
if(currentId[0] === "?"){
currentId = currentId.slice(1);
}
var stats = $http({
method: "GET",
url: "/getLessonDetails/" + currentId
})
.success(function(data, status, headers, config){
return data.status;
});
return stats;
}])
所有我想在這裏做的是有它做Ajax調用所有的控制器之間共享(你可以忽略currentId部分)和返回數據。狀態。然後在每個控制器中注入statusCheck並使用它。
一旦我statusCheck返回作爲正確的字符串值(data.status將等於3個字符串中的1)我想在控制器中使用它來顯示/隱藏的東西。我已經在每個控制器中設置了一個範圍布爾值,名爲$ scope.editorEnabled,它可以在我想要的顯示/隱藏之間切換(如果設置爲true或false。
因此,一旦我在控制器中擁有statusCheck它的價值,做這樣的事情在控制器 -
if(statusCheck == "On"){
$scope.editorEnabled = true;
}else if(statusCheck == "Off"){
$scope.editorEnabled = false;
}else if(statusCheck == "ViewOnly"){
$scope.editorEnabled = false;
$scope.viewOnlyMode= true;
}
我不知道如果我的工廠,即使正常工作,但是當它我想確保我得到了ajax獲取的字符串它會嘗試之前在控制器中閱讀這些if語句,因爲它們沒有被包裹在任何東西中,並且會立即觸發。我不知道這個思想對角度是否有好處,我仍然在調整自己的過程。特德。謝謝閱讀!
'$ http'返回一個承諾,所以這就是你從工廠返回......使用'.then()'訪問控制器中的數據 – charlietfl 2014-09-10 14:02:14