KnockoutJS追加到observableArray的开头

时间:2015-03-20 19:48:01

标签: knockout.js

我有一个ViewModel,我从服务器检索数据,并且新数据与我已有的数据连接在一起。问题是,新数据是在旧数据之后,我想要反过来所以新数据显示在视图顶部

这就是我所拥有的:

self.serverData(self.serverData().concat(newData));

,视图显示为:

  1. 旧数据
  2. 旧数据
  3. 旧数据
  4. 新数据

2 个答案:

答案 0 :(得分:2)

使用unshift函数预置可观察数组。它将修改底层数组并告知可观察的更新。

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

答案 1 :(得分:0)

您可以使用unshift或splice



function viewModel() {
  var self = this;
  self.x = ko.observableArray([1, 2, 3]);
  self.x.unshift(0);
  
  self.y = ko.observableArray([1, 2, 3]);
  self.y.splice(0, 0, 0);
  
}
ko.applyBindings(new viewModel());

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div data-bind="foreach: x">
  <span data-bind="text: $data">   </span>
</div>

yyyyyyy
<div data-bind="foreach: y">
  <span data-bind="text: $data">   </span>
</div>
&#13;
&#13;
&#13;