我試圖從服務發送數據作爲對我的控制器的承諾,但嘗試了幾個選項後沒有運氣。 http服務默認返回一個承諾,但我希望將數據作爲承諾從一個控制器發送到另一個控制器。我的服務類如下所示:add函數用於設置來自另一個控制器的數據,get函數用於在另一個控制器中獲取該數據。如何從服務中返回數據作爲AngularJS的承諾?
服務
return {
add : function(incategories){
categories=incategories;
console.log(subcategories)
},
addcatname:function(incat){
category=incat
console.log(category)
},
get : function(){
return categories;
console.log(category)
},
getcatname:function(){
return category;
},
和從控制器獲取的數據看起來像這樣的功能。
控制器
vm.getSub=function(){
vm.category=CategoryService.getcatname();
vm.subcategories=CategoryService.get();
vm.index = 0;
vm.array1 = [];
for(var i=0; i<vm.subcategories.length/2;i++)
vm.array1.push(i);
return true;
}
其中值被設定的代碼是:
vm.submit=function(category){
subCategoryService.getsubCategories(category).then(function (response)
{
console.log(response)
CategoryService.addS(response.data.data.category_name);
CategoryService.addsub(response.data.data.sunbcategories);
})
$location.path('/subcategory');
}
我的HTML
<h1 class="header">{{'CATEGORY'|translate}}</h1><br>
<div ng-controller="CategoriesController as catCtrl" class="category-content">
<table class="table-content" class="category-content" ng-show="catCtrl.getcategories()">
<tr ng-repeat="i in catCtrl.array" ng-init="index = i*2">
<td layout-align="space-around center" ng-repeat="category in catCtrl.categories.slice(index,index+2)" >
<md-button md-whiteframe="6" ng-click="catCtrl.submit(category)" class="category-button" aria-label="{{category}}">
<div class="category-button-text-translation">{{category|uppercase| translate}}</div>
<img ng-src="assets/images/categories/{{category}}.png" alt="{{category}}">
<div class="category-button-text-english">{{category|lowercase}}</div>
</md-button>
<span flex></span>
</td>
</tr>
</table>
</div>
從subCategoryService.getsubCategories數據(美食血腥)來自$ http服務,並且在獲得該數據後,我將這些值設置爲服務,以便其他控制器可以訪問它們。
現在我想讓函數的前兩行接收數據作爲服務的承諾。我將如何做到這一點?之前,每次我從$ http服務獲取數據時都是這樣,所以我沒有任何問題,但現在我有點失落。謝謝!!
是這個getCatName並且在服務中獲得功能是http服務(承諾)?請您發佈確切代碼 – JEMI
getCatName並獲取函數只是getter。這些值是在我放在它們上面的添加函數中設置的。設置值的代碼將在文章的上方添加。 – BleachedAxe
所以你想讓它定製承諾? – JEMI