【问题标题】:create x number of components within a component in ember 2.8在 ember 2.8 中的组件内创建 x 个组件
【发布时间】:2016-10-06 11:15:09
【问题描述】:

所以我的 Ember 应用中有两个组件,游戏实例和游戏卡。这个想法是我将传递一个“卡片”编号属性给游戏实例,它将创建 x 个游戏卡片实例。这是设置

game.hbs(主文件):

<div>
  {{input type="number" min="2" max="24" placeholder="enter a number from 4 to 24"
                        value=inputValue
                        key-up=handleInputChange}}

  {{game-instance cards=inputValue}}
</div>

游戏实例.hbs

<div>
  <!-- iteratively create game cards based on cards attribute passed -->
</div>

game-card.hbs

<div class="gamecard">
  <img src="" />
</div>

在尝试弄清楚如何编写 game-instance.hbs 逻辑时,我看到了把手如何允许您遍历数组。这不是我真正想要的。我想要的是这种行为:

  1. game-instance 读取从 game.hbs 传递的卡片属性。在这种情况下,我们假设 6

  2. 一种 for 循环逻辑在游戏实例中创建六个游戏卡实例。

是否有适当的把手语法来实现这一点?如果没有,我怎样才能实现类似的行为?非常感谢。

【问题讨论】:

    标签: ember.js handlebars.js


    【解决方案1】:

    想法是您需要使用 component 助手和带有卡片数组的 #each 块。这样每当我们更改卡片数组时,它都会重新渲染整个块。

    用户输入后,您可以创建/更新cardsArray。会在游戏实例组件中自动重新渲染游戏卡组件

    game-instance.hbs

    {{#each cardsArray as |value,index|}}
     {{component 'game-card' value }}
    {{/each}}
    

    每当我们使用 pushObject 或更改整个引用更改 cardsArray 时,就会呈现 each 块。

    【讨论】:

    • 如果我理解正确,您是说创建一个名为“game-instance-helper”的新组件,并让该组件接收卡片输入并返回一个数组?
    • 在这个答案中stackoverflow.com/a/38472236/5771666 我动态创建了链接。您也可以对游戏卡组件采用这种方法。
    猜你喜欢
    • 2016-09-15
    • 1970-01-01
    • 2015-12-05
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多