1

私は現在、3 つのモジュールに基づいて HTML ファイルを構築した ExtJS プロジェクトに取り組んでいます。

1. Login Module - Login Page,
2. Teacher Module - Teacher Home Page,
3. Student Module - Student Home Page.

私のファイル構造は以下のとおりです。

SAR
-student.html,
-teacher.html,
-login.html and their respective main js files in this SAR folder

SAR の下のアプリ フォルダー内に、すべてのコントローラー、ビュー、データ、ストア、モデルがあります。

extjs ファイルが 3 回読み込まれるのを避けるために、3 つの html をすべて 1 つに統合する必要があります。MVC パターンは本当に混乱します。統合すると、一部の機能が機能しません。

login.html には次のものがあります。

    <div id="login-Container"></div>

    <div id="teacherContainer">
        <div id="teacherHome"></div>
        <div id="teacherHomeChart"></div>
    </div>


    <div id="studentContainer">
        <div id="studentHome"></div>
        <div id="studentHomeChart"></div>
    </div>

ログインページコントローラー ->

// JavaScript Document

Ext.define('nSpace.controller.studentAssessmentController', {
    extend: 'Ext.app.Controller',
    stores: [
        'Users'
    ],
    views: [
        'login.loginView'
    ],
    model: 'loginModel',
    init: function() {      
        this.control({
            "#loginButton": {
                click: this.onLoginButtonClick              
            }
        });
    },
    onLoginButtonClick: function(){
       //Unable to GET HERE
        alert('hi')
                var store = this.getUsersStore();
                var logUserName = Ext.getCmp('UserName').getValue();    
                var logPassword = Ext.getCmp('Password').getValue();
                //console.log(store.data.items[0].data.loginusername)
                //console.log(store.data.items.length)
                for (var i=0;i<store.data.items.length;i++)
                {
                if(i+1 == store.data.items.length)
                {
                alert('Please check your username and password.')   
                }   
                else if (logUserName === store.data.items[i].data.loginusername  && logPassword === store.data.items[i].data.password)
                {
                    if(logUserName.indexOf("student") != -1)
                    {
                        alert('Student');

                        //var element = Ext.get('teacherContainer');
                        //element.hide();
                        break;
                    }
                    else if(logUserName.indexOf("teacher" != -1))
                    {
                        alert('Teacher');
                        break;
                    }                           
                }
                }

    }
});

app.js->

// JavaScript Document
Ext.Loader.setConfig({ 
 enabled: true
 });
Ext.application({
    requires: ['Ext.container.Viewport'],
    name: 'nSpace',
    controllers: [
        'studentAssessmentController'
    ],
    appFolder: 'app',

    launch: function() {
        Ext.create('Ext.container.Container', {
                    renderTo: 'login-Container',
                    items: {
                        cls: 'loginView',
                        xtype: 'loginView'
                    }
                   });
       /* Ext.create('Ext.container.Viewport', {       

        });*/
    }
});

機能を備えたページのすべてのビューも正しく取得しましたが、onLoginButtonClick は、それぞれの div (それぞれのログインでの教師と学生のモジュール div) の表示と非表示をトリガーしません。私が間違っているアイデアはありますか?または、適切な統合のために何をすべきかを誰かが教えてくれれば、それは役に立ちます。

4

1 に答える 1

0

ログインコントローラーでは、ビューの宣言は次のとおりです。

views: [
    'loginView'
],  
于 2014-02-07T09:01:46.860 に答える