AngularJs通过数据绑定刷新将多个值从数组推送到另一个

时间:2014-02-26 20:05:46

标签: javascript arrays angularjs

我从服务器获取一个数组,该数组可以包含数组中的0..n元素。然后我将其添加到我在本地用于数据绑定的数组(基本上在客户端缓存数据)。这样做时,数据绑定工作没有任何问题:

for (var i = 0 ; i < data.Result.length ; i++) {
    scope.cachedData.push(data.Result[i]);
}

含义 - 查看刷新,一切正常。但是,当我尝试:scope.cachedData.concat(data.Result);时,它将无效。那是为什么?

1 个答案:

答案 0 :(得分:4)

如果您想在一条指令中推送所有内容,请使用apply而不要取消对scope.cachedData的引用

Array.prototype.push.apply(scope.cachedData, data.Result);

此外,我知道这有点偏离主题,但如果您想要插入特定索引,可以splice使用apply

// I definitely want to prepend to my array here
var insertionIndex = 0,
// we don't want to delete any elements here from insertionIndex
    deleteCount = 0;
// Because we use apply the second argument is an array
// and because splice signature is (startIndex, noOfElementsToDelete, elementsToInsert)
// we need to build it
Array.prototype.splice.apply(scope.cachedData, [insertionIndex, deleteCount].concat(data.Result));

想象一下您的数组scope.cachedData = [3,4];data.Result = [1,2];,上面的代码scope.cachedData将变为[1,2,3,4]