1

私は 100% 初心者Senchaで、会社のモバイル アプリのリファクタリングに挑戦しようとしています。

ここに私のapp.jsがあります:

Ext.application({
    name: 'RecruitTalkTouch',
    views: ['Login'],
    launch: function () {

        Ext.Viewport.add([
            { xtype: 'loginview' }
        ]);
    }
});

Login.js ビュー:

Ext.define('RecruitTalkTouch.view.Login', {
  extend: 'Ext.Container',
  alias: "widget.loginview",
  xtype: 'loginForm',
  id: 'loginForm',
  requires: ['Ext.form.FieldSet', 'Ext.form.Password', 'Ext.Label', 'Ext.Button' ],
  config: {
    title: 'Login',
    items: [
      {
        xtype: 'label',
        html: 'Login failed. Please enter the correct credentials.',
        itemId: 'signInFailedLabel',
        hidden: true,
        hideAnimation: 'fadeOut',
        showAnimation: 'fadeIn',
        style: 'color:#990000;margin:5px 0px;'
      },
      {
        xtype: 'fieldset',
        title: 'Login Example',
        items: [
          {
            xtype: 'textfield',
            placeHolder: 'Email',
            itemId: 'userNameTextField',
            name: 'userNameTextField',
            required: true
          },
          {
            xtype: 'passwordfield',
            placeHolder: 'Password',
            itemId: 'passwordTextField',
            name: 'passwordTextField',
            required: true
          }
        ]
      },
      {
        xtype: 'button',
        itemId: 'logInButton',
        ui: 'action',
        padding: '10px',
        text: 'Log In'
      }
    ]
  }
});

Login.js コントローラー:

Ext.define('RecruitTalkTouch.controller.Login', {
  extend: 'Ext.app.Controller',
  config: {
    refs: {
      loginForm: 'loginForm'
    },
    control: {
      '#logInButton': {
        tap: 'onSignInCommand'
      }
    }
  },
  onSignInCommand: function(){
    console.log("HELLO WORLD");
  }
});

送信ボタンをクリックしても何も起こりません。送信ボタンを接続してイベント (クリック、タップなど) をリッスンし、情報をバックエンド API に送信するにはどうすればよいですか?

4

3 に答える 3

3

アプリケーションの app.js ファイルに、次を追加します。

controllers: [
        'Login'
    ]

あなたのアプリケーションクラスで。情報を送信するには、次のように Ajax リクエストを呼び出します。

Ext.Ajax.request({
            url: // api url..,
            method: 'POST',
            params: {
                username: // get user name from form and put here,
                password: // get password and ...
            },
            success: function(response) {
                do something...
            },
            failure: function(err) {do ..}
        });

onSignInCommand() 関数内から。

于 2013-10-31T06:39:46.337 に答える
0

controllersアプリケーション クラスのオプションにコントローラを追加して、コントローラを有効にする必要があります。

次に、データをバックエンドに送信するには、いくつかのオプションがあります。生のコンテナーの代わりにフォーム パネルを使用し、そのsubmitメソッドを使用できます。Ext.Ajaxまたは、シングルトンを使用できます。この場合、ペイロードを自分で作成する必要があります。最後に、構成されたプロキシでモデルを作成し、そのsaveメソッドを使用できます。この最後の方法は、おそらく長期的な保守性に最適です...単純なログインフォームの場合でも、それは少しやり過ぎかもしれません.

于 2013-10-30T09:49:21.747 に答える