我在这个问题上看到了很多话题,但我找不到合适的话题。我试图创建刽子手游戏,这是我的字母组件代码。我无法看到我的问题......
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'));
}
}
});
我无法找到不好的地方.. 第二次编辑:
在我的主要组件刽子手游戏中我有 如果我在主要组件中有游戏对象,这应该可行吗?
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', '');
}
}
});
答案 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);
}
});
}
});