Ember reverseObjects无法正常工作

时间:2015-02-11 19:44:29

标签: javascript ember.js

我正在使用Ember的reverseObjects() method,但它没有按预期工作。

我有一个文本输入和一个提交按钮。如果没有reverseObjects方法,所有项目都会按预期顺序添加到列表中。输入新项目时会很奇怪。例如,键入数字1到9,其中每个数字是一个条目应该显示如下列表:

9 8 7 6 五 4 3 2 1

使用reverseObjects时得到的是:

9 7 5 3 1 2 4 6 8

这里发生了什么,我该如何解决?

这是我的js:

谢谢!

var userList = [];

App.AddItemsController = Ember.ObjectController.extend({
    actions: {
        // item entry form submit
        inputSubmit: function(){
            var value = this.get('itemName');   // gets text input value
            userList.pushObject({
                name: value
            }).reverseObjects();
            document.querySelector('.js-input-add-item').value = ''; // clear input on submit
            return userList;
        }
    }
});

1 个答案:

答案 0 :(得分:1)

按下序列号时,每次都会反转数组。所以每次推动然后反转它看起来像:

  1. 1
  2. 1,2逆转为2,1
  3. 2,1,3逆转为3,1,2
  4. 3,1,2,4逆转为4,2,1,3
  5. 4,2,1,3,5与5,3,1,2,4
  6. 相反
  7. 5,3,1,2,4,6逆转为6,4,2,1,3,5
  8. 6,4,2,1,3,5,7与7,5,3,1,2,4,6
  9. 相反
  10. 7,5,3,1,2,4,6,8逆转为8,6,4,2,1,3,5,7
  11. 8,6,4,2,1,3,5,7,9与9,7,5,3,1,2,4,6,8
  12. 相反

    您可能想尝试:

    function(){
        var value = this.get('itemName');
        userList.pushObject( {name: value} );
        document.querySelector('.js-input-add-item').value = '';
        return userList.slice().reverseObjects();
    }
    

    .slice()用于创建数组的浅表副本;然后反转数组的副本(不是原始数据),这样每次向数组添加内容时,每次都不会翻转顺序。

    JSFIDDLE