2014-10-20 93 views
0

我试图让我的视图模板每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

templateProvider选项应该是一个返回html字符串或使用html字符串解析的promise的函数。它主要是为了能够生成使用$ stateParams的html。

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

另外,也许你想要的是两种状态,在这种情况下,这对状态每个都会在其相应的控制器中有一个$超时切换到另一个状态。

+0

我正在考虑使用您提到的第一种方法,但如果可以通过templateProvider进行操作,我们感到好奇。感谢那个替代解决方案,我一定会试一试。 – 2014-10-20 05:34:21

+0

我认为uiRouter的templateProvider本身并不可行,不。我的意思是,你当然可以做到这一点,所以templateProvider确实返回交替结果,但它本身无法做任何事情来使模板重新加载,所以你仍然必须强制重新加载状态来达到效果。无论如何,尽管我会建议使用指令/控制器解决方案来实现这种效果将会提供更好的逻辑分离,并且更为......“有角度”的方法。 – Semicolon 2014-10-20 05:52:56

相关问题