1

我是 emberjs 的新手,我想知道 emberjs 中的请求流程。有一些与 emberjs 相关的查询:

  • 控制器在 emberjs 中的具体作用是什么,无论我在哪里看到我们都可以在模板中创建操作。

  • 控制器、路由和视图之间有标准的命名约定和关联,但是如何关联控制器、路由和视图。

  • 请求处理时如何进行流控?

    • a 将切换控制路由到控制器或
    • 控制器将控制权移交给路由。

    如果我们想手动关联控制器和路由,那么如何关联。

4

1 回答 1

0

控制器在 emberjs 中的具体作用是什么,无论我在哪里看到我们都可以在模板中创建操作。

控制器正在将您的模型与 MVC 模式中的视图连接起来。在 Ember.JS 中,您可以使用控制器来保留将在特定模块上使用的逻辑、管理依赖项或存储条件。在模板中,您只能使用简单的条件(没有和/或),所以当您需要一些更复杂的条件时,您应该放入控制器内部。例如

App.PersonController = Ember.ObjectController.extend({
   isPersonRich: function() {
      return @get('person.money') > 1000000 && @get('person.isReal')
   }.property('person.money', 'person.isReal')
});

所以我不是虚构的并且拥有更多 1 000 000 资产的人是富有的。

{{#if isPersonRich}}
    <p>This person is rich!</p>
{{/if}}

控制器、路由和视图之间有标准的命名约定和关联,但是如何关联控制器、路由和视图。

Route 通常从您的后端获取数据。

App.PersonRoute = Ember.Route.extend({
   model: function(params) {
      this.store.find('person', params.person_id); 
   }
});

每次当你进入persons路线时,ember 都会调用你的 api(在这种情况下使用 ember 数据)来查找给定的人。此外,它会在这种情况下显示加载路线,并在失败后为您提供一些回退。

PersonView将是您可以放置​​将在模板成功呈现后执行的 jQuery 代码的地方。

App.PersonView = Ember.View.extend({
   didInsertElement: function() {
      this.$().find('*[data-toggle=tooltip]').tooltip();  
   }
});

在此示例中,我将引导工具提示添加到模板。

请求处理时如何进行流控?

路由在控制器之前处理,您甚至setupController在每个路由中都有方法,默认情况下将模型设置为控制器。

如果我们想手动关联控制器和路由,那么如何关联。

您可以覆盖setupController方法并最终覆盖renderTemplate. 没有什么可做的了。我建议您遵守 ember 名称约定。

另外看一下,如果您的控制器不打算处理已触发的事件action,它将传播到您的路线。

于 2015-01-16T20:40:43.073 回答