1

私は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の両方が両方で未定義です。

私が欠けているものは何ですか?

4

1 に答える 1

0

あなたの質問から、mouseDown関数内から要素と elementId にアクセスしている問題の 1 つだけを理解しました。

試してみthis.get('element')this.get('elementId')

于 2012-09-28T04:52:29.880 に答える