如何创建组合模型记录数据的新模型属性

时间:2014-10-17 22:06:11

标签: angularjs angularjs-directive

在AngularJS 1.2中,我有一个控制器,可以将JSON数据读入单个记录。这些记录(会议会话)每个都有阵列,其中包括会话发言人。就是这样:

data: [{title: 't1',speakers: ['speaker1','speaker2']},...]

我想编写一些将扬声器组合在一起的JavaScript,以便在我的ng-repeater中我可以简单地输出它们。也就是说,我想在模型中创建一个以逗号分隔的发言者列表的新属性。

如果我使用转发器,我遇到了杀死尾随逗号的问题,并且没有在span或div中使用该数据导致换行。

2 个答案:

答案 0 :(得分:1)

如果我正确地解释您的问题,您是否想要执行以下操作:

module.controller('Controller', ['$scope', function ($scope) {
    var data = [
            {title: 't1', speakers: ['speaker1', 'speaker2']}
        ],
        speakers = [];

    angular.forEach(data, function (object, i) {
        speakers = speakers.concat(object.speakers);
    });

    $scope.allSpeakersText = speakers.join(',');
}]);

答案 1 :(得分:1)

如果您只想为视图组合扬声器,那么过滤器将是正确的选择。内置了无组合过滤器,但很容易创建:

module.filter('combine', function() {
  return function(array) {
    return array.join(', ');
  }
});

在您看来:

<p>{{data.speakers | combine}}</p>

输出结果为:

<p>speaker1, speaker2</p>