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