2012-03-08 11 views
2

Sencha Touchクラス 'Ext.app.Controller'の 'refs'属性が不思議です。 シンプルなcontactFormが構築されたビデオチュートリアルを見ました。ありません、私は私のアプリのためにお問い合わせフォームを構築しようとしたと私はエラーを取得:「キャッチされない例外TypeError:オブジェクト[オブジェクトのオブジェクト]は方法はありません 『getContactForm』」Sencha Touch 2.0 Controllerのrefs属性が機能していませんか?

をここに私のコントローラは

Ext.define('MyFirstApp.controller.Main', { 
extend: 'Ext.app.Controller', 
views: ['Viewport', 'Home'], 

refs: [ 
    { 
     ref: 'contactForm', 
     selector: '#contactForm' 
    } 
], 

init: function() { 
    this.control({ 
     'button[action=submitContact]': { 
      tap: 'submitContactForm' 
     } 
    }); 
}, 

submitContactForm: function() { 
    var form = this.getContactForm(); 
    form.submit({ 
     url: 'contact.php' 
    }); 
} 

}です);

「refs」には問題があるようですが、「getContactForm」メソッドは「contactForm」の「ref」属性のために作成されるというビデオではありますが、そうではありません。私はここで間違っているのですか?..助けてくれてありがとう!

答えて

0

refsが正しく設定されていない可能性があります。

Ext.define('App.controller.Main', { 
    extend: 'Ext.app.Controller', 
    config: { 
    refs: { 
     main: 'mainpanel' 
    } 
    } 
}); 

mainpanelxtypeであるか、CSSセレクタかもしれないとmainはあなたのビデオで語られたもののようなgetMain()を与える:ここでは簡単なコントローラです。

1

私は、私はそれがレフリーを定義するための正しい構文です確認することができない、jeremygerritsに同意します。

documentationに基づいて、私はむしろ、このようにそれを行うだろう:

Ext.define('MyFirstApp.controller.Main', { 
    extend: 'Ext.app.Controller', 

    views: ['Viewport', 'Home'], 

    config: { 
     refs: { 
      contactForm: '#contactForm' 
     } 
    } 

    init: function() { 
     this.control({ 
      'button[action=submitContact]': { 
       tap: 'submitContactForm' 
      } 
     }); 
    }, 

    submitContactForm: function() { 
     var form = this.getContactForm(); 
     form.submit({ 
      url: 'contact.php' 
     }); 
    } 
}); 

も参照してください:http://docs.sencha.com/touch/2-0/#!/guide/controllers

2

レフリーは、ベータ/最終版に煎茶タッチ2.0開発者向けプレビュー版から変更されたプロパティを属性。だから、あなたが書いたのはdevのプレビューには正しかったのですが、現在は値ペアの名前をつけています。あなたのケースのために:

refs: { 
    contactForm: '#contactForm' 
} 
+0

yesが、これは私のために働くあなたに感謝:) – Phil

関連する問題