在刷新页面之前,ng-class始终不使用动态内容

时间:2016-12-16 17:03:57

标签: angularjs ng-class

我有一个使用嵌套在ng-repeat中的模板的指令。我对此指令中的项目使用不同的主题(只是不同的类名称),用户在更改整个网站的主题时可以更改这些主题。当用户进行主题更改时,此功能有时不起作用...除非他们在某些时候刷新页面,在这种情况下,当它们进行主题更改时它始终有效。这是一种奇怪的行为,我甚至不确定从哪里开始排除故障。这是在我的指令模板中设置类的div:

<div class="my-item" ng-class="[ma.getTheme(), ma.getSize()]">
...
</div>

这是指令JS文件中的getTheme()函数:

function getTheme() {
            console.log('theme'+ma.item.themeId);
            return "theme" + ma.item.themeId;
        }

以下是控制器JS文件中用于更改主题的函数:

function changeTemplate(selectedTemplate) {
...
for (var i = 0; i < ma.myItems.length; i++) {

                var item= ma.myItems[i];
                item.themeId = classes[index];

                var nextIndex = index + 1;
                if (nextIndex === classes.length) {
                    index = 0;
                } else {
                    index++;
                }
            }
}

其中classes只是一个不同类号的数组,它们从getTheme()函数附加到主题类名。

正如我上面所说的那样,这只会在首次加载页面时失败(当时甚至不总是)。刷新页面时,它始终有效。

页面刷新会导致这种情况发生什么变化?

TIA

1 个答案:

答案 0 :(得分:1)

这对我来说是一种竞争条件。就像您将内容分配给ajax请求返回的内容一样,有时请求会及时完成,有时则不会。我希望它能更可靠地刷新,因为ajax请求已被缓存,因此解析得更快。