使用obj.addCls('foo')添加类后,html未更新

时间:2013-02-20 17:18:55

标签: javascript sencha-touch sencha-touch-2

我正在使用sencha touch 2.2.0 alpha开发一个webapp。我正在使用导航视图,我推送其他视图。当设备脱机时,这些视图的某些元素必须具有不同的外观。为了做到这一点,我检查navigator.onLine和 - 如果为false - 我将类“离线”添加到元素。 这是第一次在元素上执行时按预期工作。但是当我按下后退按钮弹出视图然后再次按下堆栈上的视图时,该类不会添加到html中。 如代码所示,我查找dom中的所有li元素,如果他们的id以“link”开头,则添加该类。 当我记录元素时,我可以看到没有添加类,但是当我记录对象(代码中的“obj”)时,“dom”-property告诉我它是。我有什么想法或错误的想法吗?

if ( !navigator.onLine )
{
    lis = Ext.DomQuery.select('li');

    for ( i = 0; i < lis.length; i ++ )
    {
        if ( lis[i].id.substring(0, 4) == 'link' )
        {   
            obj = Ext.get(lis[i].id);   
            obj.addCls('offline');
        }
    }
}

1 个答案:

答案 0 :(得分:1)

正如我在上面的评论中所提到的,你应该只为<body>添加一个className,并在CSS选择器中使用它。

至于你的代码:它不起作用,因为Sencha Touch中的DOM结构是自动生成的,所以当你使用Ext.DomQuery手动添加一个类时,它可能不会留在元素上,因为它可能会再次被删除/创建。要在Sencha Touch中的视图/组件上添加类,您应该使用视图的cls配置:

{
    xtype: 'container',
    html: 'My view!',
    cls: 'myCustomClass'
}