我从服务器获取一个数组,该数组可以包含数组中的0..n元素。然后我将其添加到我在本地用于数据绑定的数组(基本上在客户端缓存数据)。这样做时,数据绑定工作没有任何问题:
for (var i = 0 ; i < data.Result.length ; i++) {
scope.cachedData.push(data.Result[i]);
}
含义 - 查看刷新,一切正常。但是,当我尝试:scope.cachedData.concat(data.Result);
时,它将无效。那是为什么?
答案 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]
。