# cruda-element-ui **Repository Path**: holyhigh2/cruda-element-ui ## Basic Information - **Project Name**: cruda-element-ui - **Description**: github同步库 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-07-16 - **Last Updated**: 2024-01-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cruda-element-ui A Cruda adapter for element-ui. ## Demo - [element-ui](https://stackblitz.com/edit/cruda-element-ui?file=src%2FApp.vue) ## Usage ### 1. Install ```js // Usually init cruda in main.js import request from 'axios' import CRUD from 'cruda-element-ui' // set requester Vue.use(CRUD, { request: request }) ``` ### 2. Activate - Options mode ```js // Add crud/cruds(Multi-instance) tag into root of the vue export default { crud: 'auth/users', // crud: {url:'auth/users'} object way mounted() { // The Cruda instance called '$crud' will be injected after activation this.$crud.reload() // And a entry flag you can use to confirm if the crud entry is this.$isCrudEntry } ... } ``` You can pass custom parameters to Cruda besides the URL when you activate it using API mode. Such as below ```js export default { crud: {url:'auth/users',permission:'a_b_c'} ... } ``` then you can read it via `params` ```js this.$crud.params.permission ``` that's very useful if you want to do additional UI control like Auth - API mode ```js const $crud = useCrud(vm, restURLMap) ``` ### 3. Multi-instance - Options mode ```js export default { cruds: {//Note: it's 'cruds' not 'crud' user: '/api/users',// user: {url:'/api/users'} object way log: '/api/logs' }, mounted() { //Note: it's '$cruds' not '$crud' this.$cruds.user.reload() } ... } ``` - API mode ```js const $cruds = useCruds(vm, restURL) ``` ### 4. HOOKs ```js import CRUD from 'cruda-element-ui' export default { crud: '/api/users', methods:{ [CRUD.HOOK.AFTER_QUERY](crud, rs) { crud.pagination.total = rs.data.total crud.table.data = rs.data.records || [] } } ... onMounted(){ //Add an extra hook onHook(this,CRUD.HOOK.AFTER_QUERY,(crud, rs)=>{...}) } } ``` ### 5. CRUD component The first thing you create a CRUD component is to get `$crud`. Use `lookUpCrud()` to get that then you can do other business like do queries, toggle views and so on ```html ``` ### 6. URL params Cruda supports URL param by **`:varName`** which makes you can build dynamic URLs. See below ```js //param 'orgId' is used in 'user' instance export default { cruds: { org: '/api/orgs', user: '/api/orgs/:orgId/users' }, ... methods:{ //fill the param setOrg(orgId){ this.$cruds.user.setURLParams({orgId}) this.$cruds.user.toQuery() } } } ``` ## Exportable ```js import CRUD,{...} from 'cruda-element-ui' ``` - CRUD > crud namespace, can bind global defaults, hooks - useCrud(vm, restURL) : CRUD > return a single instance - useCruds(vm, restURLMap) : Record > return a multi instance map - lookUpCrud(vm, crudName?) : CRUD | null > look up the nearest crud instance then return - onHook(vm,hookName,hook) : ()=>void > add an extra hook ## Cruda CRUD API please to [Cruda](https://github.com/holyhigh2/cruda)