首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AngularJS工厂中按值获取单个对象

如何在AngularJS工厂中按值获取单个对象
EN

Stack Overflow用户
提问于 2015-12-03 09:08:53
回答 2查看 2.2K关注 0票数 0

如何从航班数组中获取单个对象?我首先在一个视图中调用getFlights()函数,然后在访问特定航班的页面时,在另一个视图中使用getFlight(flightId)。

但是,当我调用getFlight(flightId)时,它不包含任何数据。

代码语言:javascript
复制
angular.module('myApp.factories', []).
    factory('flightFactory', function ($http) {

        var flights = {};

        return {
            getFlights: function () {
                return $http.get('app/data/flights.json').then(function (response) {
                    flights = response;
                    return flights;
                });
            },
            getFlight: function (id) {

                for (var i = 0; i < flights.length; i++) {
                    if (flights[i].flightId == id) {
                        return flights[i];
                    }
                }
                return null;
            }
        };

    });

以下是我如何在第一个控制器中得到所有的航班。

代码语言:javascript
复制
flightFactory.getFlights().then(function(response) {
              $scope.flights = response.data;
});

下面是我一直在试图在第二个控制器中获得一次航班的方法

代码语言:javascript
复制
$scope.singleflight = flightFactory.getFlight($routeParams.flightID);

以下是JSON文件的内容

代码语言:javascript
复制
[
{
    "date": "2016-02-18T00:19:11-08:00",
    "numberOfSeats": 30,
    "totalPrice": 610,
    "flightId": "PR6674",
    "travelTime": 422,
    "destination": "South Sudan",
    "origin": "Copenhagen"
},
{
    "date": "2016-11-07T16:35:45-08:00",
    "numberOfSeats": 87,
    "totalPrice": 405,
    "flightId": "ZN4890",
    "travelTime": 196,
    "destination": "Rwanda",
    "origin": "Copenhagen"
},
{
    "date": "2016-07-11T18:05:32-07:00",
    "numberOfSeats": 36,
    "totalPrice": 646,
    "flightId": "AT1096",
    "travelTime": 399,
    "destination": "Equatorial Guinea",
    "origin": "Copenhagen"
}
]

我们将非常感谢您的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-03 09:19:07

@Jeffery Yu的作品,但它公开了航班阵列。

代码语言:javascript
复制
angular.module('myApp.factories', []).
    factory('flightFactory', function ($http) {

        var flights = {};
        var _this = this;
        return {
            getFlights: function () {
                return $http.get('app/data/flights.json').then(function (response) {
                    _this.flights = response;
                    return _this.flights;
                });
            },
            getFlight: function (id) {
                var flights = _this.flights;
                for (var i = 0; i < flights.length; i++) {
                    if (flights[i].flightId == id) {
                        return flights[i];
                    }
                }
                return null;
            }
        };

    });

这将对用户隐藏航班数组(不能直接访问)。这就是@Anik Islam Abhi所说的。

票数 1
EN

Stack Overflow用户

发布于 2015-12-03 09:13:06

代码语言:javascript
复制
angular.module('myApp.factories', []).factory('flightFactory', function ($http) {

    return {
        flights:{},
        getFlights: function () {
            return $http.get('app/data/flights.json').then(function (response) {
                this.flights = response;
                return this.flights;
            });
        },
        getFlight: function (id) {

            for (var i = 0; i < flights.length; i++) {
                if (this.flights[i].flightId == id) {
                    return this.flights[i];
                }
            }
            return null;
        }
    };

});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34061806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档