EmberJS无法阅读' on'未定义的

时间:2016-12-23 19:17:08

标签: javascript jquery ember.js

我在这个问题上看到了很多话题,但我找不到合适的话题。我试图创建刽子手游戏,这是我的字母组件代码。我无法看到我的问题......

import Ember from 'ember';

export default Ember.Component.extend({

  game: null,
  letter: null,

  isMissed: false,
  isGuessed: false,

  init() {
    this._super.apply(this, arguments);
    var game = this.get('game');

    game.on('didGuessLetter', (l) => {
      if (l === this.get('letter')) {
        this.set('isGuessed', true);
      }
    });
    game.on('didMissLetter', (l) => {
      if (l === this.get('letter')) {
        this.set('isMissed', true);
      }
    });
    game.on('didReset', this, this.reset);

  },

  reset() {
    this.set('isMissed', false);
    this.set('isGuessed', false);
  },

  click() {
    if (!(this.get('isMissed') || this.get('isGuessed'))) {
      this.get('game').playLetter(this.get('letter'));
    }
  }

});

我收到错误: error in console

我无法找到不好的地方.. 第二次编辑:

在我的主要组件刽子手游戏中我有 如果我在主要组件中有游戏对象,这应该可行吗?

export default Ember.Component.extend({
  newWord: '',
  game: Ember.inject.service(),
  letters: Ember.computed(function(){
    return 'abcdefghijklmnopqrstuvwxyz'.split('');
  }),

  actions: {
    playWord() {
      var word = this.get('newWord');
      this.get('game').playWord(word);
      this.set('wordLetters', word.split(''));
      this.set('newWord', '');
    }
  }
});

1 个答案:

答案 0 :(得分:1)

您将game定义为null,并且您正试图阅读' on'来自game。这就是你得到这个错误的原因。

编辑: 我不确定您是否尝试使用hangman程序,但我可以使用on方法显示示例,并远离未捕获的错误。

import Ember from 'ember';
const Game = Ember.Object.extend(Ember.Evented, {
    didGuessLetter: function() {
        //did guess letter logic
        this.trigger('didGuessLetter');
    }
});

export default Ember.Component.extend({
    game: Game.create(),
    init() {
        this._super(...arguments);
        var game = this.get('game');
        game.on('didGuessLetter', (l) => {
            if (l === this.get('letter')) {
                this.set('isGuessed', true);
            }
        });
    }
});