github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/themes/wind/static/libs/vue-1.0.24/examples/commits/app.js (about) 1 var apiURL = 'https://api.github.com/repos/vuejs/vue/commits?per_page=3&sha=' 2 var isPhantom = navigator.userAgent.indexOf('PhantomJS') > -1 3 4 /** 5 * Test mocks 6 */ 7 8 var mocks = { 9 master: [{sha:'111111111111', commit: {message:'one', author:{name:'Evan',date:'2014-10-15T13:52:58Z'}}},{sha:'111111111111', commit: {message:'hi', author:{name:'Evan',date:'2014-10-15T13:52:58Z'}}},{sha:'111111111111', commit: {message:'hi', author:{name:'Evan',date:'2014-10-15T13:52:58Z'}}}], 10 dev: [{sha:'222222222222', commit: {message:'two', author:{name:'Evan',date:'2014-10-15T13:52:58Z'}}},{sha:'111111111111', commit: {message:'hi', author:{name:'Evan',date:'2014-10-15T13:52:58Z'}}},{sha:'111111111111', commit: {message:'hi', author:{name:'Evan',date:'2014-10-15T13:52:58Z'}}}] 11 } 12 13 function mockData () { 14 this.commits = mocks[this.currentBranch] 15 } 16 17 /** 18 * Actual demo 19 */ 20 21 var demo = new Vue({ 22 23 el: '#demo', 24 25 data: { 26 branches: ['master', 'dev'], 27 currentBranch: 'master', 28 commits: null 29 }, 30 31 created: function () { 32 this.fetchData() 33 }, 34 35 watch: { 36 currentBranch: 'fetchData' 37 }, 38 39 filters: { 40 truncate: function (v) { 41 var newline = v.indexOf('\n') 42 return newline > 0 ? v.slice(0, newline) : v 43 }, 44 formatDate: function (v) { 45 return v.replace(/T|Z/g, ' ') 46 } 47 }, 48 49 methods: { 50 fetchData: function () { 51 // CasperJS fails at cross-domain XHR even with 52 // --web-security=no, have to mock data here. 53 if (isPhantom) { 54 return mockData.call(this) 55 } 56 var xhr = new XMLHttpRequest() 57 var self = this 58 xhr.open('GET', apiURL + self.currentBranch) 59 xhr.onload = function () { 60 self.commits = JSON.parse(xhr.responseText) 61 console.log(self.commits[0].html_url) 62 } 63 xhr.send() 64 } 65 } 66 })