如何动态地将新数组添加到现有数组中

时间:2015-12-29 09:55:38

标签: javascript angularjs

我希望动态地在现有数组中添加新数组。在这里,我尝试将数组添加到共享服务中的现有数组。

这是我的代码

var shareService = angular.module('ibaDataService', []);
shareService.service('shareData', function () {
    this.comonData = [];
    this.tabData = [];
    this.pushArray = function (arrayName) {
        //this.comonData.push(arrayName[]);
          // here i want to add commonData.newArray[]
 }
    });

5 个答案:

答案 0 :(得分:1)

使用Array#concat

this.comonData = this.comonData.concat(arrayName);
  

concat()方法返回一个新数组,该数组由调用它的数组组成,并与作为参数提供的数组和/或值连接。

答案 1 :(得分:1)

在嵌套this中引用变量之前,您需要将function的值存储在变量中。

例如:

var shareService = angular.module('ibaDataService', []);
shareService.service('shareData', function () {
    var self = this;
    this.comonData = {};
    this.tabData = [];
    this.pushArray = function (key, value) {
        // self holds the value of the parent instance
        self.comonData[key] = value;

}});

self现在用于维护对原始this的引用,即使上下文已更改(在另一个函数内)。

答案 2 :(得分:1)

使用array concat

var shareService = angular.module('ibaDataService', []);
shareService.service('shareData', function () {
    this.comonData = [];
    this.tabData = [];
    this.pushArray = function (arrayName) {
        this.comonData = this.comonData.concat(arrayName);
  }
});

答案 3 :(得分:1)

如果你想动态地做,我认为你可以使用“手表”:

$rootScope.$watch('variableToWatch', function() {
       // - Call concat code here
   });

每次更改源数据时都会执行您的代码。 当然,您必须在服务中添加“$ rootScope”依赖项。

答案 4 :(得分:0)

您可以使用concat合并数组:

var hege = ["Cecilie", "Lone"];
var stale = ["Emil", "Tobias", "Linus"];
var children = hege.concat(stale);
// Result is: Cecilie,Lone,Emil,Tobias,Linus

在你的情况下:

this.comonData.concat(someOtherArray);