【问题标题】:Nested views in Ember.jsEmber.js 中的嵌套视图
【发布时间】:2013-11-23 03:16:26
【问题描述】:

我有一个容器视图,其中显示对象列表,如下所示:

 {{#each}}
      <div {{bind-attr class="author.first_name task"}}></div>
 {{/each}}

我想在每次将 DOM 元素添加到此列表时挂钩一个 Javascript 函数。我试过做:

didInsertElement: function() { ... }

但是这个钩子显然只在第一次初始化视图时运行。我想也许钩子没有运行,因为视图实际上插入了一次,而多次插入的只是嵌套元素。

那么我应该使用嵌套视图吗?

我尝试了一些类似的方法:

{{#each}}
     {{#view App.SingleItemView}}
         <div {{bind-attr class="author.first_name task"}}></div>
     {{/view}}
{{/each}}

但在这种情况下,尽管它以某种方式工作,但它没有传递必要的数据来呈现属性,例如author.first_name

【问题讨论】:

  • 当我第一次接触 Ember 时,我也对此感到困惑。简而言之,是的,使用嵌套视图。 template-helpers guide 有有用的信息,特别是在底部,它显示了每个助手正在使用的上下文。使用view时可以指定模型绑定,如{{view App.AuthorView authorBinding=this}}
  • 谢谢@somethingkindawierd 这真的很有帮助。

标签: javascript model-view-controller ember.js


【解决方案1】:

render 会给你一个新的范围,并且也很容易分配内容

<ul>
  {{#each item in controller}}
    {{render 'ind' item}}
  {{/each}}
</ul>

http://emberjs.jsbin.com/alAKubo/1/edit

【讨论】:

  • 谢谢,多亏了这个,我才让它工作。我猜帮助器的参数有点混乱。
  • 啊,相关问题:我应该扩展CollectionView 还是普通的View?我使用的是普通视图,它可以工作,但我想我应该使用前者:两者都有什么优点?
  • 你能给我一个你在说什么的例子吗,随意使用我已经给你的jsbin。
  • 不确定我能给你什么样的例子,我修改了 JSBin:emberjs.jsbin.com/alAKubo/3/edit。基本上,IndexView 包含通过render 呈现的单个 Vies。 IndexView 应该是 CollectionView 还是普通 View。另外,我刚刚通过示例意识到,为什么我可以在模板上正确调用color,但如果我在视图上调用它,它是未定义的?
  • color 是一个未定义的变量,它与调用 foo、john 或 bar 相同,它们没有定义。颜色存在于通过控制器代理的模型上,因此您应该使用吸气剂。当您以编程方式注入视图时,集合视图很有用,此外它们在模板中并不是非常有用。 emberjs.jsbin.com/alAKubo/4/edit
猜你喜欢
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
  • 2014-07-17
  • 2013-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多