|
| 1 | +import Vue from 'vue' |
1 | 2 | import Model from 'v-model'
|
2 | 3 | import Promise from 'bluebird'
|
3 | 4 |
|
4 | 5 | // set baseURL and install plugin
|
5 | 6 | Model.http.defaults.baseURL = 'http://localhost:8080/api/';
|
| 7 | +Vue.use(Model) |
6 | 8 |
|
7 | 9 | const TodoModel = Model.extend('/todo/:id')
|
8 | 10 |
|
9 |
| -TodoModel.updateAll = todos => { |
10 |
| - todos.forEach(function (todo) { |
11 |
| - todo.$update() |
12 |
| - }) |
13 |
| -} |
| 11 | +Object.assign(TodoModel, { |
| 12 | + errors: { |
| 13 | + message: '' |
| 14 | + }, |
14 | 15 |
|
15 |
| -TodoModel.archiveCompleted = todos => { |
16 |
| - todos.filter(function (todo) { |
17 |
| - return todo.completed |
18 |
| - }).forEach(function (todo) { |
19 |
| - todo.$delete().then(response => { |
20 |
| - todos.splice(todos.indexOf(todo), 1) |
21 |
| - //console.log("deleted", todo) |
| 16 | + updateAll(todos) { |
| 17 | + todos.forEach(function (todo) { |
| 18 | + todo.$update() |
22 | 19 | })
|
23 |
| - }) |
24 |
| -} |
| 20 | + }, |
| 21 | + |
| 22 | + archiveCompleted(todos) { |
| 23 | + todos.filter(function (todo) { |
| 24 | + return todo.completed |
| 25 | + }).forEach(function (todo) { |
| 26 | + todo.$delete().then(response => { |
| 27 | + todos.splice(todos.indexOf(todo), 1) |
| 28 | + //console.log("deleted", todo) |
| 29 | + }) |
| 30 | + }) |
| 31 | + } |
| 32 | + |
| 33 | +}); |
25 | 34 |
|
26 |
| -TodoModel.errors = { message: '' } //set to data. |
| 35 | +//toggles the completed and saves to server |
| 36 | +TodoModel.prototype.$toggleCompleted = function() { |
| 37 | + console.log("$toggleCompleted", this) |
| 38 | + this.completed = !this.completed |
| 39 | + this.$update() |
| 40 | +} |
27 | 41 |
|
28 |
| -// Add a response interceptor for default errors from Grails rest |
| 42 | +// Add a default response interceptor for default errors from Grails rest |
| 43 | +//see https://github.com/mzabriskie/axios#handling-errors |
29 | 44 | TodoModel.http.interceptors.response.use(function (response) {
|
30 | 45 | TodoModel.errors.message = ''
|
31 | 46 | return response
|
32 | 47 | }, function (error) {
|
33 |
| - console.log("error.response ", error.response) |
34 |
| - TodoModel.errors.message = error.response.data.message |
| 48 | + if (error.response) { |
| 49 | + // The request was made and the server responded with a status code |
| 50 | + // that falls out of the range of 2xx |
| 51 | + TodoModel.errors.message = error.response.data.message |
| 52 | + console.log('response Error ', error.response) |
| 53 | + } else if (error.request) { |
| 54 | + // The request was made but no response was received |
| 55 | + // `error.request` is an instance of XMLHttpRequest in the browser and an instance of |
| 56 | + // http.ClientRequest in node.js |
| 57 | + console.log("request error ", error.request); |
| 58 | + TodoModel.errors.message = error.request |
| 59 | + } else { |
| 60 | + // Something happened in setting up the request that triggered an Error |
| 61 | + console.log('Error ', error.message); |
| 62 | + TodoModel.errors.message = error.message |
| 63 | + } |
35 | 64 | return Promise.reject(error)
|
36 | 65 | })
|
37 | 66 |
|
|
0 commit comments