Knockout.js 将KnockoutJS附加到Array的开头

Knockout.js 将KnockoutJS附加到Array的开头,knockout.js,Knockout.js,我有一个ViewModel,从服务器检索数据,新数据与我已有的数据连接在一起。问题是,新数据跟在旧数据后面,我希望它反过来,以便新数据显示在视图的顶部 这就是我所拥有的: self.serverData(self.serverData().concat(newData)); 视图显示为: 旧数据 旧数据 旧数据 新数据 使用unshift函数预先设置可观测阵列。它将修改底层数组,并告诉可观察对象它已更新 var x = ko.observableArray([1,2,3]); x.unshif

我有一个
ViewModel
,从服务器检索数据,新数据与我已有的数据连接在一起。问题是,新数据跟在旧数据后面,我希望它反过来,以便新数据显示在视图的顶部

这就是我所拥有的:

self.serverData(self.serverData().concat(newData));
视图显示为:

  • 旧数据
  • 旧数据
  • 旧数据
  • 新数据

  • 使用unshift函数预先设置可观测阵列。它将修改底层数组,并告诉可观察对象它已更新

    var x = ko.observableArray([1,2,3]);
    x.unshift(0);
    // x() returns [0,1,2,3]
    

    可以使用取消移位或拼接

    函数viewModel(){
    var self=这个;
    self.x=ko.observearray([1,2,3]);
    自身x.unshift(0);
    self.y=ko.observearray([1,2,3]);
    自y型拼接(0,0,0);
    }
    应用绑定(新的viewModel())
    
    
    YYYYYY
    
    unshift的可能重复项是您想要的。请将
    observatarray
    视为普通数组。它有一个类似于普通的接口,可以解决您的问题。@JamesThorpe不太合适,因为
    self.serverData(self.serverData().unshift(newData))不起作用。(这是针对重复的建议)这是因为unshift的返回值是修改后数组的长度@chimsonchris我认为问题在于,第一次数组中没有设置任何内容,这导致了它失败?@user3704920您用什么初始化ObservalArray?@CrimsonChris在数据来自server@user3704920在
    []中为空
    或在
    null
    中为空?@CrimsonChris在
    self.serverData=ko.observearray()中为空