0

我将 JSON 格式存储到存储文件夹的 Code.js 中。

“商店”文件夹-> Code.js

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: 'login',
           successProperty: 'success'
           }
    }
});

“模型”文件夹 --> Code.js

Ext.define('LoginPage.model.Code', {
   extend: 'Ext.data.Model',
   fields: [
       {name: 'username', type: 'string'},
       {name: 'password', type: 'string'}   
   ]
});

现在如何在控制器文件夹的 Code.js 中声明 store 的变量?

我的 JSON 格式如下所示,格式正确:

登录响应.json

{
"login": [
  {
    "username": "venkat",
    "password": "123"
  },
  {
    "username": "admin",
    "password": "345"
  },
  {
    "username": "sam",
    "password": "234"
  },
  {
    "username": "paul",
    "password": "456"
  }
]
}

我试过 :

var store = Ext.create('LoginPage.store.Code');  
//showing no errors and also I can't see any items in it
//when checked through Chrome console.

当我将创建的存储变量保存在中时,chrome 控制台显示以下消息console.log(store);

在此处输入图像描述

编辑即使凭据正确,以下函数也始终返回 false

checkJson: function(username, password){    
    var store = Ext.create('LoginPage.store.Code');
    var matched = store.query('username', username);
    //console.log(matched);
    if(matched.length && matched[0].get('password') === password) {
         return true;
    }
    else{
        return false;
    }
 }  

Chrome 控制台中匹配的变量消息。(用户名=“venkat”,密码=“123”)

在此处输入图像描述

4

3 回答 3

1

就像大家说的,首先要知道store有没有加载。加载商店后,您可以像这样检查凭据

var match = codeStore.findBy(function(record,id) {
                if(record.get('username')==credentials.username
                       && record.get('password')==credentials.password) {
                    return true;
                }
            });

            if(match != -1) 
                alert('correct');
            else
                alert('incorrect');

我使用您提供的数据准备了一个示例,但使用的是本地商店。我希望它可以帮助你

http://jsfiddle.net/alexrom7/chn8Z/1/

编辑:我没有在标题中看到问题,或者我不知道您是否更改了:p。在这种情况下,您可以通过执行此操作来访问控制器文件中的代码存储

Ext.getStore('Code');
于 2013-02-13T15:37:17.827 回答
0

您可以使用queryBy方法。此方法中的指定函数将与此 Store 中的每条记录一起调用。你可以在这个函数中编写你的逻辑来检查记录是否存在。

store.queryBy(function(m,id){

});

于 2013-02-13T13:46:33.483 回答
0

我将首先检查 chrome 开发工具的网络选项卡,以确保您的 json 文件被正确请求并返回。之后,我会检查 store.data.items 以查看数据是否通过但未正确解析。最后,我会将 success: true 属性添加到您在 read 调用中返回的 json 中。这是 Ext 知道服务器上的一切都按计划进行的唯一方法。

于 2013-02-13T14:03:56.007 回答