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



在AngularJS 1.2中,我有一个控制器,可以将JSON数据读取到单个记录中。这些记录(会议会话)中的每一个都有作为会话发言人的数组。也就是说,类似于:

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

我想写一些JavaScript来组合扬声器,这样在我的ng中继器中我就可以简单地输出它们。也就是说,我想在模型中创建一个新的属性,它是一个逗号分隔的扬声器列表。

如果我使用th ng repeater,我会遇到杀死尾部逗号的问题,并且在span或div中没有这些数据会导致换行。

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

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

在您看来:

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

输出为:

<p>speaker1, speaker2</p>

如果我正确解释了你的问题,你想做以下事情吗:

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(',');
}]);

最新更新