0

我的用户定义的排序功能在 IE 8 中不起作用。

对象不支持属性或方法“indexOf”

roles_store.sort([{
    sorterFn: function(v1, v2) {
    var order = ['read-only', 'user', 'admin', 'super'],
        v1o   = order.indexOf(v1.get('role_name')),
        v2o   = order.indexOf(v2.get('role_name'));           

        return v1o < v2o ? -1 : 1;; 
    }
}]);

以下链接显示了一种解决方法: How to fix Array indexOf() in JavaScript for Internet Explorer browsers

我尝试用 Array.prototype.indexOf 替换 indexof

v2o = order.Array.prototype.indexOf (v2.get('role_name'));

如果我在这里遗漏了什么,我深表歉意

4

2 回答 2

1

使用 Ext.Array.indexOf,它在可能的情况下遵循本机 indexOf。

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.Array-method-indexOf

于 2012-12-12T21:37:44.093 回答
1

IE 8 有点旧,它包含一个旧的 javascript 版本。它没有很多我们每天使用的非常有用的方法。我建议包含微型Array 原型扩展库(链接)。该库允许您使用所有新浏览器(使用较新的 javascript 版本)包含的所有方法(用于数组)。

您也可以按照 Evan 的建议使用 Extjs 方法(它们运行良好),但您必须始终牢记这一点,并且您在 Internet 或本网站上找到的大多数片段和代码示例都不会运行(您将拥有将它们翻译为使用 extjs 方法)。另一个问题是,如果你不小心的话,你的代码在 Chrome 和 FF 中可以正常工作,但在 IE 中就不行。

包含我向您推荐的扩展更加容易和安全,这是我们在自己的项目中所做的,这是一个很好的解决方案。

于 2012-12-12T22:53:02.533 回答