我正在使用Ember制作一个网络应用,在那里你可以看到体育比赛的不同结果。比赛视图包括有2个位置的加热,所有位置都有“运动员”属性。当你点击一个位置时,运动员会进入第二轮。
这是我的观点:
App.SlotView = Em.View.extend({
heat:null,
athlete:null,
tagName:"span",
mouseDown : function(){
//Here's the problem: "this" isn't the original slot, but a new slot which has the original slot in its _context. I'm fixing the error with this:
var target = this._context ? this._context : this;
//Move the athlete forward etc...
//....
}})
以下是我创建新广告位的方法:
//Inside a loop
slot = App.SlotView.create({
athlete:seed,
heat:heat,
round:1,
classNames:['slot-view']
});
//slot is added to a heatview, which is added to App.round1heats
这是模板
<script type="text/x-handlebars">
<div class="row span2">
{{#each App.round1heats}}
{{#view App.HeatView class="clearfix heat round1"}}
{{#each slots}}
<div class="athlete">
{{#view App.SlotView}}
{{athlete.name}}
{{/view}}
</div>
{{/each}}
{{/view}}
{{/each}}
</div>
</script>
还有一个问题是我无法通过mouseDown函数中的“this”或“this._context”访问视图元素。元素和&amp; elementId -properties在两者中都是未定义的。
我错过了什么?
答案 0 :(得分:0)
根据您的问题,我只了解您遇到的一个问题,即从mouseDown
函数中访问元素和elementId。
尝试this.get('element')
和this.get('elementId')