在ember中的助手正在接收" undefined"

时间:2016-06-14 18:28:59

标签: javascript ember.js ember-data

我在ember中有一个包含两个单独列的组件。我正在使用一个帮助器来获取数组并将该数组拆分为两个,在第一列显示均衡,在左侧显示赔率。在控制台中,它显示帮助程序正在接收未定义的对象。

index.hbs:

<div class="row" style="padding:0% 3%">
    {{component numbers=model}}
</div>

index.js:

import Ember from 'ember';
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
export default Ember.Route.extend(AuthenticatedRouteMixin, {
    model() {
        return this.store.findAll('number');
    }
});

component.hbs(包含两列的组件):

<div class="row">
<div class="small-6 columns">
{{#each (twoColumns numbers 1) as |number|}}
    <h3><b>{{number.value}}</b></h3>
    <h6>{{number.title}}</h6>
{{/each}}
</div>
{{#each (twoColumns numbers 2) as |number|}}
    <h3><b>{{number.value}}</b></h3>
    <h6>{{number.title}}</h6>
{{/each}}
</div>
</div>

twoColumns.js(助手):

import Ember from 'ember';

export function twoColumns(params) {
  let arrayToSplit = params[0];
  let column = params[1];
  Ember.Logger.info(arrayToSplit); //this prints an empty array
  var i;
  var col1 = [];
  var col2 = [];
  for(i=0; i<arrayToSplit.length; i+=1) {
      if(i%2==0) {
          col1.push(byTheNumbers[i]);
      } else {
          col2.push(byTheNumbers[i]);
      }
  }
  if (column == 1) {
    return col1;
  } else {
    return col2;
  }
}

export default Ember.Helper.helper(twoColumns);

此外,如果我执行以下操作,则数组中的所有元素都显示正常:

<div class="row">
<div class="small-12 columns">
{{#each numbers as |number|}}
    <h3><b>{{number.value}}</b></h3>
    <h6>{{number.title}}</h6>
{{/each}}
</div>

1 个答案:

答案 0 :(得分:0)

是的我通过使用组件这样做了,在组件中你可以编写这些计算属性并在component.hbs中使用。

evenItems: Ember.computed('numbers.[]',  function() {
     return this.get('numbers').filter(function(num){ return num.value % 2 === 0 })
 }),

 oddItems: Ember.computed('numbers.[]',  function(number) {
     return this.get('numbers').filter(function(num){ return num.value % 2 !== 0 ;})
 })

你可以在这里查看https://ember-twiddle.com/fc3e3e85c1a25fea6865d36822c45864?openFiles=components.even-odd.js%2Ctemplates.components.even-odd.hbs