众所周知,Angular最近弃用了mysql_query("SELECT * FROM firstform WHERE $id='".$_SESSION["manager_name"]."'");
函数。因此,不再建议您在控制器中使用此类调用:
http.get.success,error
相反,这种调用将被使用:
$http.get("/myurl").success(function(data){
myctrl.myobj = data;
}));
问题是,简单的Spring REST模型不能使用这个新代码。我最近下载了一个带有上述旧成功函数的示例代码和一个这样的REST模型:
$http.get("/myurl").then(
function(data) {
myctrl.myobj = data;
},
function(error) {
...
}
这应该为@RequestMapping("/resource")
public Map<String,Object> home() {
Map<String,Object> model = new HashMap<String,Object>();
model.put("id", UUID.randomUUID().toString());
model.put("content", "Hello World");
return model;
}
调用返回{id:<someid>, content:"Hello World"}
之类的地图,但它什么也没有收到 - 视图为空白。
如何解决此问题?
答案 0 :(得分:5)
传递给success()
的第一个(四个)参数是响应的数据(即正文)。
但传递给then()
的第一个(也是唯一的)参数不是数据。它是完整的HTTP响应,包含数据,标题,状态和配置。
所以你真正需要的是
$http.get("/myurl").then(
function(response) {
myctrl.myobj = response.data;
},
function(error) {
...
});
答案 1 :(得分:1)
结果的期望是不同的。它是响应,而不是直接的数据对象。
// Simple GET request example:
$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
回复的属性是
data – {string|Object} – The response body transformed with the transform functions.
status – {number} – HTTP status code of the response.
headers – {function([headerName])} – Header getter function.
config – {Object} – The configuration object that was used to generate the request.
statusText – {string} – HTTP status text of the response.
由于需要数据对象,
请将代码转换为
$http.get("/resource").then(
function(response) {
myctrl.myobj = response.data;
});
答案 2 :(得分:-1)
然后必须返回一个新的承诺,所以你应该推迟处理它。
var myApp = angular.module('myApp', []);
myApp.factory('modelFromFactory', function($q) {
return {
getModel: function(data) {
var deferred = $q.defer();
var items = [];
items.push({"id":"f77e3886-976b-4f38-b84d-ae4d322759d4","content":"Hello World"});
deferred.resolve(items);
return deferred.promise;
}
};
});
function MyCtrl($scope, modelFromFactory) {
modelFromFactory.getModel()
.then(function(data){
$scope.model = data;
})
}
这是工作小提琴 - &gt;的 https://jsfiddle.net/o16kg9p4/7/ 强>