使用Ember.StateManager(而不是Ember.Router)查看管理



我想使用Ember创建一个"信息符号"类型的应用程序;显示的数据将定期更新,但没有用户输入或交互。应用程序是基于管理员提供的URL参数进行配置和初始化的。应用程序的布局和内容将根据应用程序正在监视的提要中的数据而更改。

对于这个任务来说,路由器似乎有些过头了,因为我不需要/不能将基于URL的路由映射到应用程序状态。Ember.StateManager似乎是完美的,因为它允许我仅根据应用程序逻辑中满足的条件以编程方式在状态之间转换,而忽略当前URL。不推荐使用的Ember.ViewState似乎是在使用Ember.StateManger.时管理视图的方法

使用Ember.StateManger在DOM中管理视图的当前最佳实践是什么?

有没有办法用Ember.Router来实现我所描述的?

谢谢,Aaron

看完你的主要解释后,我觉得你现在不需要任何状态。当应用程序在这些状态下需要不同的行为时,您需要定义不同的应用程序。看起来你的应用程序行为没有改变,只是视图。

因此,您可以使用一些车把条件辅助对象,以及控制器中的一些派生属性来指示是否存在任何当前建议。

{{#view App.myView}}
  {{#if hasAdvisory}}
    <div class="col-2">
      <div class="col1">
        {{#each bus}}
          //bus details
        {{/each}}
      </div>
      <div class="col2">
        //advisory details
      </div>
    </div>
  {{else}}
    <div class="col-1">
      <div class="col">
        {{#each bus}}
          //bus details
        {{/each}}
      </div>
    </div>
  {{/if}}
{{/view}}

请解释更多,比如你是否只是需要这个,或者当你有咨询和没有咨询时,你是否计划了任何不同的应用行为。

通常,用于管理基于Ember.Router的应用程序中的视图和控制器的相同技术可以用于Ember.StateManager。具体来说,将outlet与Em.Controller#connectController一起使用是切换独立于状态管理的视图的绝佳方式。