我在角度js中创建了联系人列表。在下面的例子中,我创建了服务工厂,因为我无法处理服务中的$ http.post()。success()方法。
angular.module('contactApp', ['ngRoute'])
.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/contactList', {
templateUrl: 'template/contactList.cfm',
controller: 'contList'
}).
when('/contactAddEdit', {
templateUrl: 'template/contactAddEdit.cfm',
controller: 'contactAddEdit'
}).
when('/contactAddEdit/:contactID', {
templateUrl: 'template/contactAddEdit.cfm',
controller: 'contactAddEdit'
}).
otherwise({
redirectTo: '/contactList'
});
}
])
.controller('contList', function($scope, studentSession) {
studentSession.getSessions().success(function(data, status) {
$scope.members = = queryToObject(data);
});
})
.factory('studentSession', function($http) {
return {
getSessions: function() {
return $http.get('template/dbSelect.cfm');
}
};
});

答案 0 :(得分:0)
你需要使用then()
而不是success()
你要从工厂回复承诺:
studentSession.getSessions().then(function(data, status) {
$scope.members = = queryToObject(data);
}).catch(function (err) {
console.log(err);
});
如果您需要更多支持旧浏览器,如IE8或Android mobile< 4.1使用此代替:
studentSession.getSessions().then(function(data, status) {
$scope.members = = queryToObject(data);
},function (err) {
console.log(err);
});
然后如果您真的希望从工厂返回承诺成功,您将需要一个活动:
.controller('contList', function($scope, studentSession) {
studentSession.getSessions();
$scope.$on('session:retrievedSession', function (data) {
console.log('Session retrieved is: ', data.response);
});
})
.factory('studentSession', function($rootScope, $http) {
return {
getSessions: function() {
return $http.get('template/dbSelect.cfm').success(function (response) {
$rootScope.$broadcast('session:retrievedSession', {response:response});
});
}
};
});