2.5.0 • Published 9 years ago

vue-modello v2.5.0

Weekly downloads
3
License
ISC
Repository
github
Last release
9 years ago

Vue-modello

Install

npm install vue-modello --save

Usage

define model

define student list sub module of model

studentList.js

export default {
  state: function () {
    return {
      total: 0,
      records: []
    }
  },
  actions: {
    loadStudentByPage: function ({ dispatch }, pager) {
      $.post('/path/to/student', pager).then((response) => {
        dispatch('updateStudentList', response.total, response.students)
      })
    }
  },
  mutations: {
    updateStudentList: function (state, total, students) {
      state.total = total
      state.records = students
    }
  }
}

define student sub module of model

student.js

export default {
  state: function () {
    return {
      name: '',
      gender: 0,
      birthday: null
    }
  },
  actions: {
    uploadAvatar: function ({dispatch, commit}, avatarPhoto) {
      dispatch('uploadImage', avatarPhoto).then((imageUrl) => {
        commit('updateAvatar', imageUrl)
      })
    }
  },
  mutations: {
    updateAvatar: function (state, avatarUrl) {
      state.avatar = avatarUrl
    }
  }
}

define model and mixin sub modules

model.js

import student from './student'
import studentList from './studentList'

export default {
  modelName: 'Student',
  mixins: {
    student: student,
    studentList: studentList
  },
  actions: {
    getProvinces () {
      return $.post('/path/to/provinces')
    },
    uploadImage (image) {
      let data = new FormData()
      data.append({image: image})
      return $.post('/path/to/upload', data).then((response) => {
        return response.imageUrl
      })
    }
  }
}

register model

import VueModello from 'vue-modello'
import Student from './path/to/models/student/model'

let AppMedello = new VueModello()

AppMedello.reg(Student)

export default AppMedello

use model in edit page

import AppMedello from 'app_modello'

export default {
  mixins: [AppMedello.vueMixin()],

  modello: {
    model: 'Student',
    states: ['student']
  },

  data: {
    provinces: []
  },

  created () {
    this.$model.getProvinces().then(res => {this.provinces = res.provinces})
  },

  methods: {
    uploadAvatar () {
      let avatarPhoto = this.$els.avatar.files[0]
      this.$model.uploadAvatar(avatarPhoto)
    }
  }
}

use model in list page

import AppMedello from 'app_modello'

export default {
  mixins: [AppMedello.vueMixin()],
  modello: {
    model: 'Student',
    states: ['studentList']
  },
  data: {
    pager: {
      total: 0,
      pageIndex: 1
    },
    provinces: []
  },
  created () {
    this.$model.loadStudentByPage(this.pager)
    this.$model.getProvinces().then(res => {this.provinces = res.provinces})
  }
}

Development

install global tools

npm install rollup mocha -g

install npm for development

npm install

build

npm run build

run test

npm test

2.5.0

9 years ago

2.4.0

9 years ago

2.3.3

9 years ago

2.3.2

9 years ago

2.3.1

9 years ago

2.3.0

9 years ago

2.2.0

9 years ago

2.1.0

9 years ago

2.0.0

9 years ago

1.1.0

9 years ago

1.0.0

9 years ago

0.6.2

10 years ago

0.6.1

10 years ago

0.6.0

10 years ago

0.5.4

10 years ago

0.5.3

10 years ago

0.5.1

10 years ago

0.5.0

10 years ago

0.4.2

10 years ago

0.4.1

10 years ago

0.4.0

10 years ago

0.3.0

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago

0.0.3

10 years ago