Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用AngularJS从$http/JSON返回项目的内部数组?_Angularjs_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack Text - Fatal编程技术网 servicestack-text,Angularjs,servicestack Text" /> servicestack-text,Angularjs,servicestack Text" />

如何使用AngularJS从$http/JSON返回项目的内部数组?

如何使用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

我试图从JSON响应返回项目,但无法理解语法。响应是一个自定义ServiceStack DTO(注意内部数组,称为“Items”):

我有一个AngularJS服务,它的方法是
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);
}