【问题标题】:When to render via render and when via view?什么时候通过渲染渲染,什么时候通过视图渲染?
【发布时间】:2013-04-10 17:26:59
【问题描述】:

我正在尝试确定何时使用渲染以及何时通过视图来渲染自定义视图。我知道使用 render 进行渲染可以获得完整的上下文(视图、控制器)。但是视图呢?视图应该用于自定义视图和处理事件。

以下示例来自 ember 数据示例

contacts.hbs

<div class="span3">
  <div class="well sidebar-nav">
    <ul class="nav nav-list">
      <li class="nav-header">All contacts</li>
      {{#each contact in controller}}
        {{view App.ContactInListView contentBinding="contact"}}
      {{/each}}
    </ul>
  </div>
</div>
<div class="span9">
  {{outlet}}
</div>

contact_in_list_view.hbs

App.ContactInListView = Em.View.extend({
  templateName: 'contact_in_list',
  tagName: 'li',
  classNameBindings: 'isActive:active',

  isActive: function() {
    return this.get('content.id') === this.get('controller.activeContactId');
  }.property('controller.activeContactId')
});

contact_in_list.hbs

{{#linkTo "contact" contact}}{{contact.fullName}}{{/linkTo}}

我不能只用渲染渲染contact_in_list 并传递一些控制器吗? 我应该什么时候使用渲染和什么时候查看?经验法则是什么?

【问题讨论】:

标签: ember.js


【解决方案1】:

我不能只用 render 渲染 contact_in_list 并传递一些控制器吗?

{{render}} 帮助器可以传递模型,但不能传递控制器。在这种情况下,您可能想要的是 {{each}} 助手的 itemController 属性

{{#each contact in controller itemController="contactInList"}}
  {{view App.ContactInListView}}
{{/each}}

看看API docs for Ember Handlebars.helpers

我应该何时使用渲染以及何时查看?经验法则是什么?

当您想使用同名控制器的单例实例在当前上下文中呈现视图/模板时,请使用 {{render}} 帮助器。

当您想在当前上下文中呈现视图而不更改到另一个控制器时,请使用 {{view}} 帮助器。点赞{{view Ember.TextField}}

【讨论】:

    猜你喜欢
    • 2014-12-22
    • 1970-01-01
    • 2019-08-02
    • 2020-06-19
    • 2023-02-20
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多