AngularJS控制器/工厂返回未定义的对象
在工厂restful web api调用后,角度控制器结果未定义。 我看过很多关于这方面的帖子,但似乎没有一篇能解决我的问题。我有一个控制器,可以进行RESTfulWebAPI2调用。使用fiddler,我可以看到调用和200响应,但我似乎永远无法得到结果,而且我知道get是通过异步的。下面是工厂和控制器。我还尝试显式地将回调发送到工厂,这种方法甚至不会导致未定义的对象结果,只是不起作用。我在这里真的停滞不前了,我是安格拉斯的新手,怎么了?目前,我已将控制器调用连接到一个按钮,用于显式测试AngularJS控制器/工厂返回未定义的对象,angularjs,angular-services,Angularjs,Angular Services,在工厂restful web api调用后,角度控制器结果未定义。 我看过很多关于这方面的帖子,但似乎没有一篇能解决我的问题。我有一个控制器,可以进行RESTfulWebAPI2调用。使用fiddler,我可以看到调用和200响应,但我似乎永远无法得到结果,而且我知道get是通过异步的。下面是工厂和控制器。我还尝试显式地将回调发送到工厂,这种方法甚至不会导致未定义的对象结果,只是不起作用。我在这里真的停滞不前了,我是安格拉斯的新手,怎么了?目前,我已将控制器调用连接到一个按钮,用于显式测试 **
**FACTORY NO EXPLICIT CALL-BACK**
casenoteApp.factory('MyFactory', function ($http) {
var factory = {};
var urlBase = 'http://xxxxxx/api/Client';
factory.getClients = function (userLogin) {
return $http.get(urlBase + '/' + userLogin);
};
return factory;
});
**CONTROLLER NO EXPLICIT CALL-BACK**
casenoteApp.controller('MyController', MyController);
function MyController($scope, MyFactory) {
$scope.addCustomer = function () {
MyFactory.getClients(123456)
.success(function (clients) {
var curCust = clients;
$scope.status = clients.last_name;
})
.error(function (error) {
$scope.status = 'Unable to load client data: ' + error.message;
});
}
}
**FACTORY PASSING IN CALL-BACK**
casenoteApp.factory('MyFactory', function ($http) {
var factory = {};
var urlBase = 'http://xxxxxx/api/Client';
factory.getClients = function (userLogin, callback) {
return $http.get(urlBase + '/' + userLogin).success(callback)
}
return factory;
});
**CONTROLLER PASSING IN CALL-BACK**
casenoteApp.controller('MyController', MyController);
function MyController($scope, MyFactory) {
$scope.addCustomer = function ()
MyFactory.getClients(123456, function(clients) {
var curCust = clients[0];
$scope.status = clients.last_name;
})
}
}
将工厂设置为使用
。然后
并返回数据,如下所示:
casenoteApp.factory('MyFactory', function ($http) {
var urlBase = 'http://xxxxxx/api/Client';
return {
getClients: function (userLogin) {
return $http.get(urlBase + '/' + userLogin).then(function(data) {
return data.result;
});
}
};
});
和您的控制器:
MyFactory.getClients(01234).then(function(data) {
console.log(data); //hello data!
});
这导致了同样的问题。返回的JSON看起来很好:{“int_id”:123456,“last_name”:“Doe”,“first_name”:“John”,“type”:“FAM”,“sex”:null,“birthdate”:null在fiddler中,但在控制台中,我得到以下信息:XMLHttpRequest用于所需的跨源资源共享(CORS)。web服务位于同一台服务器上,但位于不同的虚拟目录中。这不需要jsonp,对吗?如果是,这听起来像是问题吗?为什么会发生此错误?好的,必须清除蜘蛛网。启动此操作时,angular visual studio项目正在运行内置服务器,web服务是托管的,因此原因是跨源问题。我现在已重新托管到IIS,并将呼叫返回到我的控制器,但返回的数据在发布到console.log.Ok时仍然未定义。它现在可以工作。它应该是.data,因此对于上述数据。data现在返回结果。谢谢。