0
我有一個可以說服務兩種方法
var getAccountTypes = function() {
return $http.get(serviceBase + "accountTypes");
};
var getSalesReps = function() {
return salesRepResource.query();
};
正如你所看到的,getAccountTypes使用$ HTTP而getSalesReps使用$資源。
我使用的UI路由器,這裏是我的狀態:
.state("app.erp.accountVertical.createAccount", {
url: "/createAccount",
views: {
"": {
controller: "createAccountController as vm",
templateUrl: "app/erp/accountVertical/account/createAccount.html"
},
"[email protected]": {
templateUrl: "app/erp/accountVertical/accountBasicInfoPanel.html"
},
"[email protected]": {
templateUrl: "app/erp/accountVertical/account/accountBillToAddressPanel.html"
}
},
resolve: {
commonService: "commonService",
dropDowns: function (commonService) {
return {
accountTypes: commonService.getAccountTypes(),
countries: commonService.getCountries(),
salesReps: commonService.getSalesReps(),
states: commonService.getStates()
};
},
loadMyFiles: function($ocLazyLoad) {
return $ocLazyLoad.load({
files: [
"app/erp/accountVertical/account/createAccountController.js"
]
});
}
}
})
當我瀏覽到的觀點,我的銷售代表下拉被正確填充。但是,我的帳戶類型下拉列表是空的。看起來承諾沒有解決?以下是我在console.log中看到的內容。
這裏是控制器:
(function() {
"use strict";
angular
.module("app.accountVertical")
.controller("createAccountController", createAccountController);
createAccountController.$inject = [
"$http",
"$state",
"$filter",
"appSettings",
"dropDowns"
];
function createAccountController($http, $state, $filter, appSettings, dropDowns) {
var vm = this;
vm.account = {};
console.log(dropDowns.accountTypes);
vm.accountTypeOptions = dropDowns.accountTypes.data;
vm.salesRepOptions = dropDowns.salesReps;
}
}());
如何獲取數據了$ HTTP GET到控制器?謝謝。
我想有$ HTTP不依賴苗條控制器。在進入控制器之前,我應該可以使用ui-router來解決所需的一切。如何在控制器實例化之前強制$ http解析? – BBauer42
從服務返回值時,您可以嘗試使用$ timeout函數。這樣.get方法在返回時會有一個repsonse。看看我的答案是一個eidt – Henry00