Javascript 在Ember.js中在何处生成数组
更新: 我将{{else}}添加到嵌套的each中,看起来模板并没有在单个点上迭代。认为日志助手在这种情况下不会启动是愚蠢的。我试着挖得更深一些 更新2 谢谢你的第一个答案。在数组索引上可能没有从0开始计数,这使得forEach函数的行为很有趣。每一个作品的第一级都很好,第二级一点也不好。我将尝试更改脚本,以便以不同的方式存储X Y坐标。尽管这很方便 所以我在我的IndexController中生成了一个简单的数组Javascript 在Ember.js中在何处生成数组,javascript,arrays,ember.js,Javascript,Arrays,Ember.js,更新: 我将{{else}}添加到嵌套的each中,看起来模板并没有在单个点上迭代。认为日志助手在这种情况下不会启动是愚蠢的。我试着挖得更深一些 更新2 谢谢你的第一个答案。在数组索引上可能没有从0开始计数,这使得forEach函数的行为很有趣。每一个作品的第一级都很好,第二级一点也不好。我将尝试更改脚本,以便以不同的方式存储X Y坐标。尽管这很方便 所以我在我的IndexController中生成了一个简单的数组 grid:function(){ //让我们生成一个二维网格 var数据=[]
grid:function(){
//让我们生成一个二维网格
var数据=[];
var limits=this.get('limits');
//控制台日志(限制);
对于(var y=limits.min.y;y您正在从limits.min.y
和limits.min.x
索引开始设置数组项,正如我所猜测的,这些索引可以大于0。因此,让我们来看一下本例中的代码:
var data = [];
var limits = this.get('limits');
for(var y = limits.min.y; y <= limits.max.y; y++){
data[y] = new Array(this.get('numberOfColumns'));
for(var x = limits.min.x; x <= limits.max.x; x++){
data[y][x] = 0;
}
}
感谢您的输入,我意识到了这一危险,但我需要数组索引从极限值开始计数,而不是从0开始计数。这在普通javascript中对我很有效,现在我将此逻辑注入Ember,它的行为很有趣。我可以在控制台中检查整个数组,它看起来很好,但只是每个函数的第一级工作正常。无法在把手中正确使用函数,因此我必须从0开始计数。我将尝试在某个对象中存储X Y坐标。再次感谢。最佳解决方案取决于应用程序的设计。您可以将最小值/最大值存储在某个位置。您可以在模板中添加额外的检查:{{{网格中的每个网格行}{{如果网格行}}{{{if spot}}{{if spot}}{{if}}{{/if}}{{/if}{/each}{/if}}{/each}}{/code>,但是如果相应的项等于0,这些if帮助程序将不起作用。因此,您可以将数组项转换为对象:{value:0}
。关于第二级数据。在Ember中,如果您使用pushObject方法将项目推送到数组,则观察者、计算属性和数组帮助器将正确分叉。因此,根据上面所述,这应该是这样的:for(var x=limits.min.y;x或者,更好的方法是直接在模板中检查索引。请查看或stackoverflow.com/a/14113688/3887471
var data = [];
var limits = this.get('limits');
for(var y = 0; y <= limits.max.y - limits.min.y; y++){
data[y] = new Array(this.get('numberOfColumns'));
for(var x = 0; x <= limits.max.x - limits.min.y; x++){
data[y][x] = 0;
}
}