检查要在extjs中进行比较的json数据

检查要在extjs中进行比较的json数据,json,extjs,extjs4.1,extjs-mvc,Json,Extjs,Extjs4.1,Extjs Mvc,我使用extjsmvc创建了一个简单的登录页面,以了解extjs的MVC架构。正如您在下面看到的,我正在尝试将json数据导入存储,然后我将使用输入的登录凭据检查该数据中的每个用户名和密码。我现在感到困惑的是,如何从store文件夹中检索到的json数据检查用户名和密码到view文件夹中?(以下代码仅为有问题的相关代码) 我知道这可能会引发安全威胁,因为我正在客户端进行检查 查看文件夹-->Code.js function checkJson(username, password){ /

我使用extjsmvc创建了一个简单的登录页面,以了解extjs的MVC架构。正如您在下面看到的,我正在尝试将json数据导入存储,然后我将使用输入的登录凭据检查该数据中的每个用户名和密码。我现在感到困惑的是,如何从
store
文件夹中检索到的json数据检查用户名和密码到
view
文件夹中?(以下代码仅为有问题的相关代码)

我知道这可能会引发安全威胁,因为我正在客户端进行检查

查看文件夹-->Code.js

function checkJson(username, password){
    //if matched, return true.
    //else, return false.
}
Ext.define('AM.model.User', {
   extend: 'Ext.data.Model',
   fields: ['name', 'email']
});
Ext.define('LoginPage.store.Code', {
   extend: 'Ext.data.Store',
   model: 'LoginPage.model.Code',
   autoLoad: true,


   proxy: {
        type: 'ajax',
        api: {
            read: 'data/loginResponse.json',
            update: 'data/checkCredentials.json'  //Contains:  {"success": true}
        },
        reader: {
            type: 'json',
            root: 'loginResponse',
            successProperty: 'success'
        }
   }
});
'model'文件夹-->Code.js

function checkJson(username, password){
    //if matched, return true.
    //else, return false.
}
Ext.define('AM.model.User', {
   extend: 'Ext.data.Model',
   fields: ['name', 'email']
});
Ext.define('LoginPage.store.Code', {
   extend: 'Ext.data.Store',
   model: 'LoginPage.model.Code',
   autoLoad: true,


   proxy: {
        type: 'ajax',
        api: {
            read: 'data/loginResponse.json',
            update: 'data/checkCredentials.json'  //Contains:  {"success": true}
        },
        reader: {
            type: 'json',
            root: 'loginResponse',
            successProperty: 'success'
        }
   }
});
'store'文件夹-->Code.js

function checkJson(username, password){
    //if matched, return true.
    //else, return false.
}
Ext.define('AM.model.User', {
   extend: 'Ext.data.Model',
   fields: ['name', 'email']
});
Ext.define('LoginPage.store.Code', {
   extend: 'Ext.data.Store',
   model: 'LoginPage.model.Code',
   autoLoad: true,


   proxy: {
        type: 'ajax',
        api: {
            read: 'data/loginResponse.json',
            update: 'data/checkCredentials.json'  //Contains:  {"success": true}
        },
        reader: {
            type: 'json',
            root: 'loginResponse',
            successProperty: 'success'
        }
   }
});
loginResponse.json

{
"form": {
   "login": [
     {
       "username": "venkat",
       "password": "123"
     },
     {
       "username": "admin",
       "password": "345"
     }
   ]
}

您应该将代码的检查部分放入控制器(视图用于演示)。在视图中,定义一些带有登录和密码字段的表单。在Controller catch
中,单击窗体上的事件
确定
登录
)按钮,获取窗体值(登录+密码),然后使用
Ext.data.Store.query()
方法查找凭据是否匹配:

寻找如何在MVC中使用控制器捕捉事件的示例

在控制器中放置:

init: function() {
    this.control({
        '#form_ok_button': { // this is the `id` property of your form's Login button
            click: function(button) {
                 var fValues = button.up('form').getValues(); // Assume your button is bound to the form
                 // Or you can use `Controller.refs` property (http://docs.sencha.com/ext-js/4-1/#!/api/Ext.app.Controller-cfg-refs) to get form
                 var matched = store.query('username', fValues.username);
                 if(matched.length && matched[0].get('password') === fValues.password) {
                     // login OK!
                 }
            }
        }
    });
},
如何使用
refs
(在控制器中):

您可以阅读有关
引用的内容

对于
Ext.app.Controller.stores中的每个存储,也会创建数组自动获取程序(对于
code
Store,请在控制器内部使用
this.getCodeStore()

以下是流程:

  • 使用
    this.getUsernameField()
    this.getPasswordField()
    获取用户名和密码字段值
  • 您可以
    query()
    存储用户名
  • 若商店中存在用户名,则检查密码是否合适

  • 谢谢你的回复。这里的
    表单是什么?+1感谢您让我清楚地理解了结构:)。问题是我的按钮没有绑定到任何形式,它只是存在于一个容器中。容器还有两个文本字段,其中包含用户名和密码。我得到了这些文本字段值,并试图在一个函数中进行匹配,即
    函数checkJson(用户名、密码)
    ,如我的帖子所示。此外,我得到了一个错误
    未捕获引用错误:未定义存储
    如何定义存储变量?(
    变量存储=?
    )请帮助我是新的。谢谢,我只是添加了缩进,以便于理解。(希望你不介意)谢谢你让我知道extjs中的好东西,但我想你还不明白我在这里想要得到什么。我想检查'store'文件夹中的每个用户名和密码值,Code.js(从json检索)位于'controller'文件夹中的函数中(根据您的建议从'view'文件夹更改为'controller'文件夹)。该函数位于“controller”文件夹中的
    函数checkJson(用户名、密码)
    。如果用户名和密码匹配,此函数返回true,否则返回false。对不起,如果我之前因为我糟糕的英语而让你困惑的话。:)