如何使用AngularJS从$http/JSON返回项目的内部数组?
我试图从JSON响应返回项目,但无法理解语法。响应是一个自定义ServiceStack DTO(注意内部数组,称为“Items”): 我有一个AngularJS服务,它的方法是如何使用AngularJS从$http/JSON返回项目的内部数组?,angularjs,
servicestack-text,Angularjs,
servicestack Text,我试图从JSON响应返回项目,但无法理解语法。响应是一个自定义ServiceStack DTO(注意内部数组,称为“Items”): 我有一个AngularJS服务,它的方法是getAll(): 我有一个控制器正在尝试使用此服务: (function () { 'use strict'; angular .module('testmodule') .controller('TestModule', TestModule); functi
getAll()
:
我有一个控制器正在尝试使用此服务:
(function () {
'use strict';
angular
.module('testmodule')
.controller('TestModule', TestModule);
function TestModule(testItemSvc, logger) {
var vm = this;
vm.testItems = [];
vm.title = "Test Items";
vm.activate = activate;
activate();
function activate()
{
return getTestItems().then(function(){
// Log and announce
logger.info('Test Items loaded');
});
}
function getTestItems(){
return testItemSvc.getAll().then(function(data){
vm.testItems = data;
return vm.testItems;
});
}
}
})();
我可以看到返回的响应(这是我获取JSON的地方),但我无法确定如何返回项目。这就是所有摸索的地方。getAllComplete()
编辑:我添加了一个
activate()
函数和一个toastr弹出窗口,以显示承诺成功履行的时间。它确实着火了。而且,在我的视图HTML中,我成功地绑定到了vm.title
。但是,我使用ng repeat
在vm.testItems
中循环,它从不显示任何内容。$http.get
返回一个对象的属性,该属性已列为函数参数。试试下面的方法
function getAll() {
function errorHandler (message) {
exception.catcher('XHR Failed for Applications')(message);
$location.url('/');
}
function successHandler(response) {
return response.data.Items;
}
return $http.get('http://servername.com/TestItems/GetAll')
.then(successHandler, errorHandler);
}
你为什么不把你的服务注入控制器?谢谢,@Alex!绑定到response.data.Items是困扰我的问题。我看到的示例显示数据是一个数组(数据[0])。它现在工作得很好。:)
(function () {
'use strict';
angular
.module('testmodule')
.controller('TestModule', TestModule);
function TestModule(testItemSvc, logger) {
var vm = this;
vm.testItems = [];
vm.title = "Test Items";
vm.activate = activate;
activate();
function activate()
{
return getTestItems().then(function(){
// Log and announce
logger.info('Test Items loaded');
});
}
function getTestItems(){
return testItemSvc.getAll().then(function(data){
vm.testItems = data;
return vm.testItems;
});
}
}
})();
function getAll() {
function errorHandler (message) {
exception.catcher('XHR Failed for Applications')(message);
$location.url('/');
}
function successHandler(response) {
return response.data.Items;
}
return $http.get('http://servername.com/TestItems/GetAll')
.then(successHandler, errorHandler);
}