我不能让下面的代码工作在我的测试程序:数组排序不更新DOM
this.propertyWillChange('tableContent');
this.get('tableContent').sort(function (a, b) {
var nameA = a.artikel_name,
nameB = b.artikel_name;
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
return 0 //default return value (no sorting)
});
this.propertyDidChange('tableContent');
得到的数据进行排序,但DOM不会被更新。
模板看起来是这样的:
<tbody>
{{#each NewApp.router.gridController.tableContent}}
{{#view NewApp.TableRow rowBinding="this"}}
<td style="width: 100px">{{view.row.product_no}}</td>
<td align="right" style="width: 100px">{{view.row.price}}</td>
<td>{{view.row.artikel_name}}</td>
{{/view}}
{{/each}}
</tbody>
我试图重现此问题有短的jsfiddle片段。但它有效。唯一的区别是,我使用ajax调用(和一些额外的路由器设置)获取数据。
selectionChanged: function() {
var that = this;
if (this.selection) {
$.getJSON("api/v1/lists/" + this.selection.id + "/prices", function (content) {
that.set('tableContent', content);
});
}
}.observes('selection')
相同的代码工作,如果我复制数组并重新分配复制的数组。
你能提供的jsfiddle?它可以模拟一个AJAX调用,所以这种情况下应该可以演示一个小提琴... – pangratz 2012-07-18 19:15:33
[JSFiddle](http://jsfiddle.net/rogergl/PY7Hr/22/) - 但我没有公开的可用数据模拟ajax调用。 – rogergl 2012-07-18 19:35:42