我正在使用NetBeans在Java中开发Web应用程序 使用AngularJS。
当我在localhost中访问我的WebService时,我正在获取包含我需要的对象的JSON数组,工作得非常好
BUT
在控制器中,我没有收到信息
Web浏览器的日志:
结果:[object Object] OR {} script.js:140:5
成功/错误:未定义
代码:
minhaAplicacao.controller('inicioPacienteCTRL', function ($scope, $http) {
$scope.medicoSelecionado;
var aux;
var $scope.result = window.console.log($http.get("http://localhost:8080/Clinica5/webresources/medicos")).then(function (success) {
aux = success;
}, function (error) {
aux = error;
});
window.console.log("Result: "+$scope.result+ " OR "+JSON.stringify($scope.result));
window.console.log("Success/Error: "+aux);
});
如果我把这段代码放在视图中,我就会收到错误:
<div ng-bind="$scope.result"></div>
错误:$ scope.result未定义
我已配置$ routeProvider并且绝对正确
非常感谢&lt; 3 Big Hug!
答案 0 :(得分:1)
您可以尝试以下方式。
minhaAplicacao.controller('inicioPacienteCTRL', function ($scope, $http) {
$scope.functionName = function(){
//define
$scope.medicoSelecionado = {};
$http.get("http://localhost:8080/Clinica5/webresources/medicos").then(function (success) {
console.log(success);
//success data passed
$scope.medicoSelecionado = success;
}, function (error) {
console.log(error);
//error message
$scope.error = error;
});
}
});
并使用此html显示错误
<div class="error">{{error}}</div>
答案 1 :(得分:0)
您需要根据asynch请求(例如
)将响应分配给控制器范围变量结果 $scope.result = success
MoreOver你可以在声明$ scope变量时避免使用var
minhaAplicacao.controller('inicioPacienteCTRL', function ($scope, $http) {
$scope.medicoSelecionado;
$scope.aux = {};
$scope.result {};
$http.get("http://localhost:8080/Clinica5/webresources/medicos").then(function (success) {
$scope.result = success;
}, function (error) {
$scope.aux = error;
});
window.console.log("Result: ",$scope.result, " OR ",JSON.stringify($scope.result));
window.console.log("Success/Error:",$scope.aux);
});
也在视野中
<div ng-bind="result"></div>
不需要$ scope
答案 2 :(得分:0)
尝试<div ng-model="result"></div>
第二个错误。
没有必要这样做:
$scope.medicoSelecionado;
$scope.aux;
$scope.result;
只需在需要时使用新模型;不需要声明。
根据Vinod Louis的建议,在.then()中执行$scope.result = success
应该没问题。
我会这样做:
minhaAplicacao.controller('inicioPacienteCTRL', function ($scope, $http) {
$http.get("http://localhost:8080/Clinica5/webresources/medicos")
.then(function (success) {
$scope.result = success;
}, function (error) {
$scope.result = error;
});
window.console.log("Result: "+$scope.result+ " OR "+JSON.stringify($scope.result));
});
顺便说一下,aux
做了什么?
答案 3 :(得分:0)
您必须定义var aux = {}
因为如果您没有定义任何内容,那么它将显示未定义的
并且您正在成功获得对象,以便显示[object, object]
minhaAplicacao.controller('inicioPacienteCTRL', function ($scope, $http) {
$scope.medicoSelecionado;
var aux = {};
var $scope.result = window.console.log($http.get("http://localhost:8080/Clinica5/webresources/medicos")).then(function (success) {
aux = success;
}, function (error) {
aux = error;
});
window.console.log("Result: "+$scope.result+ " OR "+JSON.stringify($scope.result));
window.console.log("Success/Error: "+aux);
});
答案 4 :(得分:0)
GOT!
出于某种原因与路线“登录”发生冲突。我不知道为什么。
解决方案是删除redirectTo行
when('/inicioMedico', {
templateUrl: 'inicioMedico.html',
controller: "inicioMedicoCTRL"
}).
otherwise ({
// redirectTo: 'login' ERROR HERE
});