Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Ember.js中在何处生成数组_Javascript_Arrays_Ember.js - Fatal编程技术网

Javascript 在Ember.js中在何处生成数组

Javascript 在Ember.js中在何处生成数组,javascript,arrays,ember.js,Javascript,Arrays,Ember.js,更新: 我将{{else}}添加到嵌套的each中,看起来模板并没有在单个点上迭代。认为日志助手在这种情况下不会启动是愚蠢的。我试着挖得更深一些 更新2 谢谢你的第一个答案。在数组索引上可能没有从0开始计数,这使得forEach函数的行为很有趣。每一个作品的第一级都很好,第二级一点也不好。我将尝试更改脚本,以便以不同的方式存储X Y坐标。尽管这很方便 所以我在我的IndexController中生成了一个简单的数组 grid:function(){ //让我们生成一个二维网格 var数据=[]

更新: 我将{{else}}添加到嵌套的each中,看起来模板并没有在单个点上迭代。认为日志助手在这种情况下不会启动是愚蠢的。我试着挖得更深一些

更新2 谢谢你的第一个答案。在数组索引上可能没有从0开始计数,这使得forEach函数的行为很有趣。每一个作品的第一级都很好,第二级一点也不好。我将尝试更改脚本,以便以不同的方式存储X Y坐标。尽管这很方便

所以我在我的IndexController中生成了一个简单的数组

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;
    }
}