私はEmberを使用して、スポーツトーナメントのさまざまな結果を確認できるWebアプリを作成しています。トーナメントビューは、2つのスロットを持つヒートで構成され、すべてに「アスリート」プロパティがあります。スロットをクリックすると、アスリートは第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」を介してビューの要素にアクセスできないという問題もあります。elementとelementId-propertiesの両方が両方で未定義です。
私が欠けているものは何ですか?