gpt4 book ai didi

Ember.js 和 handlebars 每个助手,带有 subview

转载 作者:行者123 更新时间:2023-12-04 12:42:41 24 4
gpt4 key购买 nike

我正在尝试在我的 {{#each}} 模板块中使用 View 助手,而不使用全局路径(我的 Controller 创建和销毁他们自己的 View )。

例子。给定一个带有 myList 数组属性的 View 和一个 itemButton subview :

这将工作

<script type="text/x-handlebars" name="my-list-view">
{{#each myList}} <!-- App.myListView.myList -->

{{view App.myListView.itemButton}} {{title}}

{{/each}}
</script>

这不会:
<script type="text/x-handlebars" name="my-list-view">
{{itemButton}} <!-- works fine outside the each -->
{{#each myList}}

{{view itemButton}} {{title}} <!-- itemButton view not found -->

{{/each}}
</script>

我似乎无法从每个 View 助手访问父 View (或者实际上访问除正在迭代的对象的属性之外的任何内容)。

hacky 解决方法 我想出的是:
  • 将我想使用的 View 添加到我正在迭代的项目中。

  • 或者
  • 在 App.myListView 中创建 collectionView
  • 在该集合 View 类中创建一个 itemViewClass View
  • 在 itemViewClass 中移动 itemButton View
  • 将 {{#each}} 替换为 {{#collection}}

  • 或者
  • 为迭代创建自定义 Handlebars 助手。

  • 这两个选项看起来都很糟糕。
    不过,当然有比创建 2 个新类(并嵌套 4 个 View 深)更好的选择来迭代一个列表。是否有我可以使用的替换 Handlebars 助手?

    解决方法实现

    选项#1:修改内容数组

    http://jsfiddle.net/FQEZq/3/
    缺点:必须将 View 添加到每个模型实例仅用于迭代。

    选项#2:自定义集合 View

    http://jsfiddle.net/ST24Y/1/
    缺点:现在您有两个不需要/想要的额外 View ,并且对标记的控制较少。从 subview 到父实例的引用现在需要 parentView.parentView.parentView。

    最佳答案

    #each对您的要求来说太有限了。如果您愿意使用要嵌套在 #each 中的 View 的全局路径,则可以使其工作。 .否则,您的集合 View 方法是最好的。将 View 添加到模型实例可能会使您的应用程序设计变得困惑,因此我会避免这种情况。

    保持模板干净的一个想法是利用 Ember.View属性如:

  • collectionView - 返回最近的祖先是 Ember.CollectionView
  • itemView - 返回最近的祖先,它是 Ember.CollectionView 的直接 child
  • contentView - 返回最近的具有属性内容的祖先。
  • 关于Ember.js 和 handlebars 每个助手,带有 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9662401/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com