我知道这个问题被问了很多,我已经阅读了关于这个主题的一堆stackoverflow问题但我没做什么似乎解决了我的问题。请帮我告诉我自己是个白痴。
使用angular 1.3.0。
这是我的状态:
.state('app.admin.cards.edit', {
url: '/edit/:cardID',
views: {
cards: {
templateUrl: 'tpl/cards.edit.html',
controller: 'AdminCardEditCtrl',
resolve: {
data: ['$stateParams', 'AdminCardService',
function ($stateParams, AdminCardService) {
var cardID = $stateParams.cardID;
AdminCardService.getCard(cardID).then(function (data) {
return data;
});
}
]
}
}
},
access: { auth: true, admin: true }
})
这是我的控制器:
.controller('AdminCardEditCtrl', ['$scope', '$window', 'AdminCardService', 'data',
function ($scope, $window, AdminCardService, data) {
console.log(data);
}
);
以下是我服务的一部分:
.factory('AdminCardService', function ($http, $q) {
return {
...
getCard: function (_id) {
var d = $q.defer();
var promise = $http.post('/api/card', { _id: _id }).success(function (data) {
d.resolve(data);
});
return d.promise;
},
...
};
});
数据永远不会传递给控制器,console.log只输出“undefined”。如果我在州或服务中控制日志数据,那么它们都按预期工作。我做错了什么人?
答案 0 :(得分:2)
只需在路由器中返回AdminCardService的结果即可。路由器将处理'然后'回调并将结果发送给您的控制器:
resolve: {
data: ['$stateParams', 'AdminCardService',
function ($stateParams, AdminCardService) {
var cardID = $stateParams.cardID;
return AdminCardService.getCard(cardID);;
}
]
}