我在我的. HBs上设置了一个5x5的网格。我想用ember.js OCTANE来保持我的游戏状态。我该怎么做,最好的方法是什么?请分享想法。我需要创建一个模型吗?我是Octane的新手,请帮助。到目前为止,我刚刚创建了一个网格组件,我正在尝试用数组来使用微光跟踪。
哈佛商学院:
<table class="quantize" style="width: 80%">
{{#each (range 0 5) as |row|}}
<tr class="">
{{#each (range 0 5) as |cell|}}
<td
class="border border-dark"
style="width:10%">
{{cell}}
</td>
{{/each}}
</tr>
{{/each}}
</table>
1条答案
按热度按时间1mrurvl11#
我认为在组件上保持状态是最简单的,如果原始数据是硬编码的,并且不需要从服务器获取或保存到服务器上。
我建议查看辛烷教程来更深入地学习这些模式。你可以访问它here。
在辛烷组件中存储阵列状态:
首先,我们将数组数据放入跟踪的属性中,并编写一个可以修改该数据的操作:
我们使用
each
辅助器迭代该二维数组。保持路径模型中的状态
如果你想把数组数据放到路由的model钩子中,你也可以这样做。然而,model主要是在你从API中获取数据时使用的。优点是Ember可以为你处理一些异步获取和渲染,Octane组件只允许对它“拥有”的数据进行更改。如果需要对从父组件或路由传入的数据进行更改,则必须通过调用同样传入的函数来完成。这称为“单向绑定”。
首先,我们从路由的模型钩子返回数据:
第一个
我们将模型数据和editItems操作传递给显示表的组件:
在我们的组件中,我们将这些项称为
@items
,而不是this.items
。当数据来自外部时(如父路由或组件),将使用@
。然后,当您要对数组进行更改时,必须调用传入的
editItems
函数。它可以作为this.args.editItems
使用。this.args
是从父组件传入组件的任何内容。或者,您可以直接在模板中使用传入的操作,并将您要更改的项传递给它。