在Angular UI Router templateProvider中使用$ interval

时间:2014-10-20 04:59:49

标签: angularjs angular-ui setinterval

我试图让我的视图模板每10分钟更新一次。在状态配置中使用此设置不起作用:

.state('home', {
    url: '/',
    controller: 'landing',
    templateProvider: function($templateFactory, $interval) {
        var templateId = 0;

        return $interval(function(){
            var template = templateId % 2 == 0 ? 
                          'landing-primary.html':'landing-secondary.html';

            templateId++;

            return $templateFactory.fromUrl('views/templates/' + template);

        }, 600000);
    }
})

实现此类工作的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

templateProvider选项应该是一个函数,它返回一个html字符串或一个用html字符串解析的promise。它主要存在,因此您可以生成以某种方式使用$ stateParams的html。

您尝试做的事情通常不会通过路线/州定义来完成;你所描述的是应该在指令或控制器中的逻辑。虽然没有更多关于你想要实现什么的更多信息,但很难肯定地说,这听起来像你真正需要的是一个单一的“登陆”页面,两个模板的内容除以一个ng-switch指令被绑定到模型属性。然后在您的控制器中,您将设置$ interval以每10分钟更改一次该模型属性。

或者,也许你想要的是两种状态,在这种情况下,这对状态将在其相应的控制器中具有切换到另一状态的$ timeout。