Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 5如何在登录后存储用户详细信息,并将其用于ViewModel中的数据绑定_Extjs_Mvvm_Extjs5 - Fatal编程技术网

Extjs 5如何在登录后存储用户详细信息,并将其用于ViewModel中的数据绑定

Extjs 5如何在登录后存储用户详细信息,并将其用于ViewModel中的数据绑定,extjs,mvvm,extjs5,Extjs,Mvvm,Extjs5,我是ExtJS5的新手。我花了很多时间试着去学习它,并且很难理解一些事情 我已经能够创建一个身份验证系统,但是我的问题是在哪里存储用户对象。在阅读了一些文档和其他答案之后,这些就是我提出的策略 对用户进行身份验证并检索用户数据,然后:- 使用用户数据创建模型实例并将其存储在全局变量中: 问题是如何将其添加到viewmodel,以便将其字段绑定到视图。例如 将用户名绑定到按钮的文本 在视图中创建模型链接模型: 问题是,如何传入模型Id以便从服务器检索用户 将用户数据存储在全局变量中,然后在vie

我是ExtJS5的新手。我花了很多时间试着去学习它,并且很难理解一些事情

我已经能够创建一个身份验证系统,但是我的问题是在哪里存储用户对象。在阅读了一些文档和其他答案之后,这些就是我提出的策略

对用户进行身份验证并检索用户数据,然后:-

  • 使用用户数据创建模型实例并将其存储在全局变量中: 问题是如何将其添加到viewmodel,以便将其字段绑定到视图。例如 将用户名绑定到按钮的文本
  • 在视图中创建模型链接模型: 问题是,如何传入模型Id以便从服务器检索用户
  • 将用户数据存储在全局变量中,然后在view controller中访问viewModel内存存储代理,然后将数据添加到存储,然后加载存储。 问题是,当我这样做时,我仍然无法访问视图中的数据进行数据绑定
请参阅下文:-

情景1 Application.js
Ext.define('Wilma.Application'{
扩展:“Ext.app.Application”,
要求:[
“Wilma.DirectAPI”,
'Wilma.view.login.login'
],    
姓名:'威尔玛',
观点:[
“Wilma.view.MyViewport”
],
商店:[
//TODO:在此处添加门店
],
enableQuickTips:正确,
启动:函数(){
ExtRemote.HWLogin.loginStatus(“”,函数(结果,事件){
如果(结果、成功){
log('我被调用'+result.data);
//全局变量
Wilma.app.LoggedInUser=Ext.create(Wilma.model.User,result.data.User);
console.log(Wilma.app.LoggedInUser);
Ext.widget('mainviewport');
}
否则{
Ext.widget('login');
}
}
});
});
视图模型
Ext.define('Wilma.view.header.usermenu.UsermenuModel'{
扩展:“Ext.app.ViewModel”,
别名:“viewmodel.usermenu”,
要求:[
“Wilma.store.Users”,
'Wilma.model.User'
],
// ???????????????
// ???????????????
//我在这里干什么
});
情景2 App.js 相关部分:

launch:function(){
ExtRemote.HWLogin.loginStatus(“”,函数(结果,事件){
如果(结果、成功){
log('我被调用'+result.data);
//全局变量
Wilma.app.LoggedInUser=Ext.create(Wilma.model.User,result.data.User);
//或
//Wilma.app.LoggedInUser=result.data.user
console.log(Wilma.app.LoggedInUser);
Ext.widget('mainviewport');
}
否则{
Ext.widget('login');
}
}
});
视图模型
链接:{
loggedinuser:{
参考:“用户”,
id:Wilma.app.LoggedInUser.get(“\u id”)
}
}
情景3 视图控制器
Ext.define('Wilma.view.header.usermenu.UsermenuController'{
扩展:“Wilma.controller.BaseViewController”,
别名:“controller.usermenu”,
onbeforerender:函数(按钮,eOpts){
var userstore=this.getViewModel().getStore('usermenu');
userstore.getProxy().data=Wilma.app.LoggedInUser;
load();
//添加(Wilma.app.LoggedInUser);
}
});
视图模型
Ext.define('Wilma.view.header.usermenu.UsermenuModel'{
扩展:“Ext.app.ViewModel”,
别名:“viewmodel.usermenu”,
要求:[
“Wilma.store.Users”,
'Wilma.model.User'
],
商店:{
用户菜单:{
模型:“Wilma.model.User”,
代理:{
键入:“内存”
},
读者:{
类型:'json',
rootProperty:“数据”
//messageProperty:'message'
},
自动加载:错误
}
}
});
拜托,我在这件事上纠缠太久了。需要帮忙吗

让我总结一下:

我要做的是验证一个用户,获取用户详细信息并将其存储在某个位置,数据绑定到viewModel和视图中的用户数据(在本例中为按钮文本)


谢谢

在视图具有视图模型或已分配视图模型的组件的任何视图控制器中,您可以使用
getViewModel()
。因此:

Ext.define('MainViewModel'{
扩展:“Ext.app.ViewModel”,
别名:“viewmodel.main”
});
Ext.define('MainViewController'{
扩展:“Ext.app.ViewController”,
别名:“controller.main”,
启动:函数(){
ExtRemote.HWLogin.loginStatus(“”,函数(结果,事件){
如果(结果、成功){
此.getViewModel().set('currentUser',
Ext.create('User',result.data.User));
}
});
}
});
Ext.define('MainView'{
扩展:“Ext.Container”,
viewModel:'主',
绑定:{title:'{currentUser.username}}
});

获得登录结果后,currentUser在视图模型上设置,并可在视图中使用。

我相信这可以满足您的需要(从商店获取信息并将其保存到视图模型):谢谢,但很抱歉,这对我没有帮助。在大多数示例中,它们处理网格和存储。如果我只想要一条记录,或者不使用网格就得到一条特定的记录,该怎么办。谢谢,非常感谢。我也不确定是否要在视图控制器中执行此操作。