-
Notifications
You must be signed in to change notification settings - Fork 171
Er Get Started
首先需要安装edp
,命令是npm install -g edp
,命令执行完毕之后,通过运行edp --version
检查是否安装成功。
git clone https://github.com/ecomfe/edpx-ria.git
cd edpx-ria
npm install .
edp help riaproject
mkdir my-project
edp riaproject init
edp riaproject genpage /hello/world
此时目录中应该有一些默认初始化好的代码,例如:
dep/ edp-webserver-config.js module.conf edp-build-config.js index.html src/
通过命令edp ws start
启动web server
,访问http://localhost:8848/#/hello/world
,就能看到一个最基本的页面。
默认情况下,riaproject
初始化的项目已经添加了esui
的依赖,因此我们可以在模板中直接使用esui
的控件,例如:
<!-- src/hello/world.tpl.html -->
<div><div data-ui="type:Button;id:btn">Hello World</div></div>
对于比较复杂的控件,比如esui Table
,除了在模板中添加对应的代码之外,还需要在View
中补充需要的内容。例如:
<!-- src/hello/world.tpl.html -->
<div data-ui="type:Table;id:table"></div>
我们还需要修改src/hello/WorldView.js
,添加esui Table
所需要的数据。
HelloWorldView.prototype = {
template: 'helloWorld',
...
uiProperties: {
table: {
datasource: tbDataSource,
sortable: true,
columnResizable: true,
followHead: true,
breakLine: 1,
select: 'multi',
noDataHtml: '<p style="margin:0;">nothing</p>',
fields: [
...
]
}
},
...
上边的demo中,Table的数据是由uiProperties.table.datasource
(Crumb是使用path
,具体参考esui
的demo)来初始化的,如果Table初始化的数据需要异步获取,则可以将数据写入Model.prototype.datasource
,然后去掉uiProperties.table.datasource
字段。
//src/hello/HelloWorldModel.js
var datasource = require( 'er/datasuorce' );
...
function HelloWorldModel() {
Model.apply( this, arguments );
}
HelloWorldModel.prototype = {
// datasource不能是空对象,否则Model的处理逻辑有问题
datasource: {
tableData: datasource.remote(url,{
method: 'POST',
data: {'key': 'value'}
})
}
};
我们还要在对应子模块下的html中加入一个替换标志data-ui-*:@ModelProAttr
,这样UIView的处理过程中Model.datasource.tableData
才会作为options出现,但是最后会用UIView.uiProperties
覆盖一次,所以不要出现uiProperties.table.datasource
字段Model初始化才有效。这个规则在ef/doc/UIView.md
里边有说明,但是写错了,datasource
属性的值应该是this.model.get('users')
。
<!-- src/hello/HelloWorld.tpl.html -->
<div data-ui="type:Table;id:table;datasource:@tableData"></div>
Model.prototype.datasource
的数据类型会影响到数据最后将被如何使用,具体请查阅er/datasource.js
的方法和er/Model
中datasource
对象的一大片注释
更多控件的使用方式可以参考esui
的demo
TODO
貌似没啥好说的,直接edp build -f
即可,生成的代码都在output
目录里面。