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

Ember.js 使用Ember.StateManager(而不是Ember.Router)查看管理,ember.js,Ember.js,我想使用Ember创建一个“信息标志”类型的应用程序;显示的数据将定期更新,但没有用户输入或交互。应用程序根据管理员提供的URL参数进行配置和初始化。应用程序的布局和内容将根据应用程序监视的提要中的数据而变化 路由器对于这项任务来说似乎有些过分,因为我不需要/不能将基于URL的路由映射到应用程序状态。StateManager看起来很完美,因为它允许我仅根据应用程序逻辑中满足的条件以编程方式在状态之间转换,而忽略当前URL。不推荐使用的Ember.ViewState似乎是在使用Ember.Stat

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

路由器对于这项任务来说似乎有些过分,因为我不需要/不能将基于URL的路由映射到应用程序状态。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}}
{{{#view App.myView}
{{{#如果有}
{{{每辆公共汽车}
//巴士详情
{{/每个}}
//咨询详情
{{else}
{{{每辆公共汽车}
//巴士详情
{{/每个}}
{{/if}
{{/view}

请更详细地解释一下,如果您只是需要它,或者在您有咨询和没有咨询时,您是否计划了任何不同的应用程序行为。

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

因此,您只需使用一些把手条件帮助器,以及控制器中的某些派生属性,指示是否存在任何当前通知,即可完成此操作

{{#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}}
{{{#view App.myView}
{{{#如果有}
{{{每辆公共汽车}
//巴士详情
{{/每个}}
//咨询详情
{{else}
{{{每辆公共汽车}
//巴士详情
{{/每个}}
{{/if}
{{/view}

请更详细地解释一下,如果您只是需要它,或者当您有咨询和没有咨询时,您是否计划了任何不同的应用程序行为。

一般来说,基于
Ember.Router
的应用程序中用于管理视图和控制器的相同技术可以与
Ember.StateManager
一起使用。具体而言,将插座与
Em.Controller#connectController
配合使用是一种独立于状态管理的切换视图的极好方法。

一般来说,基于
Ember.Router
的应用程序中用于管理视图和控制器的相同技术可以与
Ember.StateManager
配合使用。具体来说,使用带有
Em.Controller#connectController
的插座是切换独立于状态管理的视图的一种很好的方式。

“应用程序的布局和内容将根据应用程序监视的提要中的数据而变化。”您能给出一个示例场景吗?当然。该标志将显示公交车到站信息。在正常情况下,将有一个前往该站的公共汽车的主要名单。如果应用程序接收到数据,表明公交线路上存在有效的服务建议,则应用程序将切换到两列布局,其中一侧显示公交车到达情况,另一侧显示服务建议列表。我想象这两种情况(没有当前的公告和有效的公告)可以由Ember中的两种不同应用程序状态表示。“应用程序的布局和内容将根据应用程序监视的提要中的数据而变化。”您能给出一个示例场景吗?当然。该标志将显示公交车到站信息。在正常情况下,将有一个前往该站的公共汽车的主要名单。如果应用程序接收到数据,表明公交线路上存在有效的服务建议,则应用程序将切换到两列布局,其中一侧显示公交车到达情况,另一侧显示服务建议列表。我想这两种情况(没有当前的建议和有效的建议)可以由Ember中的两个不同应用程序状态表示。您对何时需要状态的描述非常有用。这对我来说是有道理的。我来试试这个。看起来很简单。谢谢。你对何时需要州的描述真的很有帮助。这对我来说是有道理的。我来试试这个。看起来很简单。谢谢