【问题标题】:Display array from factory in angularJS在angularJS中显示工厂的数组
【发布时间】:2015-09-14 11:32:23
【问题描述】:

我正在尝试显示 2 个数组中的 1 个,这是我的工厂:

App.factory('NieuwsService', ['BERKVENS_NIEUWS', 'SVEDEX_NIEUWS', function (BERKVENS_NIEUWS, SVEDEX_NIEUWS) {
    var nieuwsService = {};

    var _nieuws = [];

    var _loadNieuws = function (url) {
        switch (url) {
        case 'berkvens':
            _nieuws = BERKVENS_NIEUWS;
            break;
        case 'svedex':
            _nieuws = SVEDEX_NIEUWS;
            break;
        }
    }

    nieuwsService.loadNieuws = _loadNieuws;
    nieuwsService.nieuws = _nieuws;

    return nieuwsService;

}]);

这是我的控制器的代码:

App.controller('instellingenCtrl', function ($scope, NieuwsService) {
    var url = 'berkvens';

    angular.copy(NieuwsService.loadNieuws(url));

    $scope.message= NieuwsService.nieuws[1].title;
});

但它不会起作用。

那么我该如何选择我想要的数组“berkvens”以及如何显示它呢?

jsfiddle

【问题讨论】:

  • “BERKVENS_NIEUWS”和“SVEDEX_NIEUWS”在哪里以及如何定义?到目前为止,您尝试过的东西可能会有所帮助。
  • 如果您在问题中添加BERKVENS_NIEUWS 值会更好。
  • 什么意思? @gauravbhavsar
  • 我编辑了帖子,现在有一个小提琴。 @Quad
  • @Goldenowner 我在答案中添加了工作 plunker,并且工作正常。

标签: arrays angularjs controller factory


【解决方案1】:

您的服务中不需要nieuwsService.nieuws = _nieuws;
你只需要在case : 条件之后return _nieuws

工作Plunker

工厂

App.factory('NieuwsService', ['BERKVENS_NIEUWS', 'SVEDEX_NIEUWS', function (BERKVENS_NIEUWS, SVEDEX_NIEUWS) {
    var nieuwsService = {};

    var _nieuws = [];

    var _loadNieuws = function (url) {
        switch (url) {
        case 'berkvens':
            _nieuws = BERKVENS_NIEUWS;
            return _nieuws; // return _nieuws if case 'berkvens'
        case 'svedex':
            _nieuws = SVEDEX_NIEUWS;
            return _nieuws; // return _nieuws if case 'svedex'
        }
    }

    nieuwsService.loadNieuws = _loadNieuws;

    return nieuwsService;

}]);

控制器

App.controller('instellingenCtrl', function ($scope, NieuwsService) {
    var url = 'berkvens';

    // copy loadNieuws  
    var copyLoadNieuws = angular.copy(NieuwsService.loadNieuws(url));

    $scope.message= copyLoadNieuws[1].title;
});

【讨论】:

  • 你可以使用console.log(copyLoadNieuws) 来检查你得到了什么吗?错误是说 copyLoadNieuws 在您的控制器中是 undefined
  • 检查 Plunker,我在回答中添加了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 2019-02-17
  • 2015-01-21
  • 1970-01-01
相关资源
最近更新 更多