Control
控制器
src/control.js:6
方法
Control
Control
(
-
modelName
-
loadingbar
-
mock
)
Defined in
src/control.js:324
此方法是一个装饰器,只能用于类,被装饰后的类会变成对象列表(JSON)格式,主要目的是传递给组件使用,通过redux connect连接。 被装饰的类将成为一个控制器,处理异步数据逻辑或业务逻辑,将数据传递给视图或服务器
参数:
modelName
Object
实体类对象
loadingbar
Loadingbar
废弃
mock
Mock
废弃
参数名 | 类型 | 标识 | 描述 |
---|---|---|---|
modelName
| Object | 实体类对象 | |
loadingbar
| Loadingbar | 废弃 | |
mock
| Mock | 废弃 |
Returns:
object
Example:
import {Sync,Control} from 'gfs-react-mvc'
import TestModel from '../model/TestModel'
//这里由于@为文档关键符号,所以下面将以$代替
//@Control(TestModel)
class TestControl{
constructor(){}
$action
changeAge(){
fetch('/test.json'[,params]).then((data)=>{
//control中默认提供update、del、insert、save四种操作数据方法,会根据不同的control名生成,如下根据testControl生成的方法testControlUpdate
dispatch(this.testControlUpdate('age','ajax改变的age:'+data.age) )
})
}
//不建议使用下列方式
//这里由于@为文档关键符号,所以下面将以$代替
$Sync('/test',{
method:'get'
})
$action
save(data){
//此处data是异步请求后服务器返回的结果
if(data){
//返回数据更新页面节点信息
return data
}
//不做任何改变
return false
}
}
del
del
(
-
path
-
modelName
)
Defined in
src/control.js:16
删除store中某条数据
参数:
path
String
需要被删除的属性地址,根据具体的对象结构,例如一个结构为:var data={name:'test',other:{age:18}}的对象,如果想删除age的值应该是这样:this.del('data.other.age')
modelName
String
model名字,默认是绑定model之后的modelname
参数名 | 类型 | 标识 | 描述 |
---|---|---|---|
path
| String | 需要被删除的属性地址,根据具体的对象结构,例如一个结构为:var data={name:'test',other:{age:18}}的对象,如果想删除age的值应该是这样:this.del('data.other.age') | |
modelName
| String | model名字,默认是绑定model之后的modelname |
Returns:
Function
Example:
$Control(TestModel)
class TestControl {
delTest(data,dispatch,modelJson,model){
this.del('age')
}
}
getModelName
getModelName
(
-
actionName
-
isDefault
-
modelName
)
Defined in
src/control.js:406
获取model方法名全名,在未传任何值时返回方法前缀
参数:
actionName
String
default='',方法名,可选
isDefault
Boolean
是否获取系统中提供的方法名,默认false,可选
modelName
String
model名字,可选
参数名 | 类型 | 标识 | 描述 |
---|---|---|---|
actionName
| String | default='',方法名,可选 | |
isDefault
| Boolean | 是否获取系统中提供的方法名,默认false,可选 | |
modelName
| String | model名字,可选 |
Returns:
string
insert
insert
(
-
path
-
data
-
isImmutable
-
modelName
)
Defined in
src/control.js:113
插入store中某条数据
参数:
path
String
需要被删除的属性地址,根据具体的对象结构,例如一个结构为:var data={name:'test',other:{age:18}}的对象,如果想要在data中新增一些字段应该这样:this.insert({sex:'男'})
data
String | object
需要保存的值,新的值会覆盖之前的值
isImmutable
Boolean
是否将值转换为Immutable类型,默认为false,如果更新的值为object类型建议设置为true
modelName
String
model名字,默认是绑定model之后的modelname
参数名 | 类型 | 标识 | 描述 |
---|---|---|---|
path
| String | 需要被删除的属性地址,根据具体的对象结构,例如一个结构为:var data={name:'test',other:{age:18}}的对象,如果想要在data中新增一些字段应该这样:this.insert({sex:'男'}) | |
data
| String | object | 需要保存的值,新的值会覆盖之前的值 | |
isImmutable
| Boolean | 是否将值转换为Immutable类型,默认为false,如果更新的值为object类型建议设置为true | |
modelName
| String | model名字,默认是绑定model之后的modelname |
Returns:
Function
Example:
$Control(TestModel)
class TestControl {
insertTest(data,dispatch,modelJson,model){
fetch('/test').then((data)=>{
this.insert({
sex:'男'
})
})
}
}
save
save
(
-
path
-
data
-
isImmutable
-
modelName
)
Defined in
src/control.js:151
保存store中某条数据
参数:
path
String
跟update一样
data
String | object
需要保存的值,新的值会覆盖之前的值
isImmutable
Boolean
是否将值转换为Immutable类型,默认为false,如果更新的值为object类型建议设置为true
modelName
String
model名字,默认是绑定model之后的modelname
参数名 | 类型 | 标识 | 描述 |
---|---|---|---|
path
| String | 跟update一样 | |
data
| String | object | 需要保存的值,新的值会覆盖之前的值 | |
isImmutable
| Boolean | 是否将值转换为Immutable类型,默认为false,如果更新的值为object类型建议设置为true | |
modelName
| String | model名字,默认是绑定model之后的modelname |
Returns:
Function
Example:
$Control(TestModel)
class TestControl {
saveTest(data,dispatch,modelJson,model){
fetch('/test').then((data)=>{
this.save('age',data.age)
})
}
}
Sync
Sync
(
-
anywhere
)
Defined in
src/control.js:184
异步操作,IE9以下不建议使用,Sync是一个装饰器(Decorator),用于装饰Control类中的方法,将原有的方法变成一个异步成功调用后执行结果方法,被装饰的方法需要返回数据或false,决定是否更新store刷新节点。
- 由Sync装饰后的方法,其作用域为Control,依然可以调用类中其他方法
- Sync参数error可以为Control中xxxError命名的方法替代,“xxx”命名规则必须与Sync装饰的方法名一致
- 被装饰后的方法在View中调用时传入的参数将已第二个为准,第一个参数将永远是异步执行后的结果
- 被装饰的方法名要和Model类中方法名对应
参数:
anywhere
Object | String
参数为一个字符串时,anywhere为url,当方法拥有2个参数,第一个参数作为url,第二个参数为object类型
anywhere.dataType
String
数据返回类型 默认为json
anywhere.asyn
Boolean
是否为异步请求,默认为true
anywhere.method
String
数据请求方式,默认为GET,可选值有:POST、GET、OPTION、DEL、PUT
anywhere.timeout
Number
请求超时时间,可选填
anywhere.credentials
Object
跨域是是否要包含cookie值,可选值:include
anywhere.error
Function
请求失败回调,可选
anywhere.header
Object
包含的请求头,可选
anywhere.body
Object
需要传递给服务端的属性字段值,可选
anywhere.cache
Boolean
请求数据是否缓存
参数名 | 类型 | 标识 | 描述 | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
anywhere
| Object | String | 参数为一个字符串时,anywhere为url,当方法拥有2个参数,第一个参数作为url,第二个参数为object类型
|
Returns:
function
Example:
import {Sync,Control} from 'gfs-react-mvc'
class TestControl{
constructor(){}
//这里由于@为文档关键符号,所以下面将以$代替
$Sync('/test',{
method:'get'
})
save(data){
//此处data是异步请求后服务器返回的结果
if(data){
//返回数据更新页面节点信息
return data
}
//不做任何改变
return false
}
$Sync('/del',{
method:'get'
})
del(data){
//此处data是异步请求后服务器返回的结果
if(data){
//返回数据更新页面节点信息
return {
//手动指定model对应方法
type:this.getModelName('del'),
data:data
}
}
//不做任何改变
return false
}
//也可直接使用
$Sync()
update(data){
//此处data是异步请求后服务器返回的结果
if(data){
//返回数据更新页面节点信息
return {
//手动指定model对应方法
type:this.getModelName('update'),
data:data
}
}
//不做任何改变
return false
}
}
update
update
(
-
path
-
data
-
modelName
)
Defined in
src/control.js:41
更新store中某条数据,主要已合并为主,如果是想将新值覆盖旧值,请使用save方法
参数:
path
String
需要被删除的属性地址,根据具体的对象结构,例如一个结构为:var data={name:'test',other:{age:18}}的对象,如果想修改age的值应该是这样:this.update('data.other.age',20)
data
String | objaect
需要合并的值
modelName
String
model名字,默认是绑定model之后的modelname
参数名 | 类型 | 标识 | 描述 |
---|---|---|---|
path
| String | 需要被删除的属性地址,根据具体的对象结构,例如一个结构为:var data={name:'test',other:{age:18}}的对象,如果想修改age的值应该是这样:this.update('data.other.age',20) | |
data
| String | objaect | 需要合并的值 | |
modelName
| String | model名字,默认是绑定model之后的modelname |
Returns:
Function
Example:
$Control(TestModel)
class TestControl {
updateTest(data,dispatch,modelJson,model){
fetch('/test').then((data)=>{
this.update('age',data.age)
})
}
}
updateWith
updateWith
(
-
data
-
merge
-
modelName
)
Defined in
src/control.js:74
更新store中某条数据,可自定义合并规则
参数:
data
Object
需要合并的值
merge
Function
自定义合并规则方法
modelName
String
model名字,默认是绑定model之后的modelname
参数名 | 类型 | 标识 | 描述 |
---|---|---|---|
data
| Object | 需要合并的值 | |
merge
| Function | 自定义合并规则方法 | |
modelName
| String | model名字,默认是绑定model之后的modelname |
Returns:
Function
Example:
$Control(TestModel)
class TestControl {
updateTest(data,dispatch,modelJson,model){
return
fetch('/test').then((data)=>{
this.updateWith({
names:['test','test1','test2']
},function merger(prev,next){
if( Immutable.List.isList(prev) && Immutable.List.isList(next)){
return next
}
if(prev && prev.mergeWith){
return prev.mergeWith(merger,next)
}
return next
})
})
}
}