2017-03-26 8 views
2

ajax axiosを使用するメソッドで引数を渡す必要があります。Vue.js 2.0 - メソッドの引数を渡すAJAX Axios

私はthis.allAdmissions()メソッドを呼び出しています。この関数を再利用できるように、引数を渡す必要があります。たとえば、this.allAdmissions( 'http://localhost/school/api/hello')です。次に、axios.get( 'url')で使用します。ありがとう

+1

必要なのは、 '_.debounce(function(url){}、delay)'です。 Debounceはパラメータを渡します。 – Bert

+0

this.allAdmission( 'htpp:// localhost/school/api/hello')のように渡して、_.debounce(function(url)、500)を使って呼び出すことができます。これは正しいです? – Rbex

+0

再利用できる関数を作成しようとしているのですか?または、関数が0.5秒に1回しか実行されないことを確認していますか? – Bert

答えて

1

あなたがしようとしているように見えるのは、URLを受け取り、URLの結果をデータの変数値にバインドする関数を作ることです。ここでそれをどうやって行うのかです。

methods: { 
    allAdmissions: _.debounce(function(url, value){ 
    axios.get(url) 
     .then(function(response){ 
     this[value] = response.data.admissions 
     }.bind(this)) 
     .catch(function(error){ 
     console.log(error) 
     }) 
    }) 
} 

あなたは、このようにそのメソッドを呼び出した場合次に、

this.allAdmissions('http://localhost/school/api/admissions‌​', "admissions") 

allAdmissionsはあなたの呼び出しの結果に自分のデータにadmissionsプロパティを設定します。これはハードコーディングされているので常にresponse.data.admissionsを使用したい場合に有効です。それを可変にしたい場合は、

methods: { 
    getSomeData: _.debounce(function(url, value, responseValue){ 
    axios.get(url) 
     .then(function(response){ 
     this[value] = response.data[responseValue] 
     }.bind(this)) 
     .catch(function(error){ 
     console.log(error) 
     }) 
    }) 
} 
+0

ええ、それは今働いています。私はちょうど 'var app = this'と' app [value] = response.data.admissions'を追加しましたが、3番目のパラメータで動作することは分かっています。あきらめないでくれてありがとう!あなたはロックスターです! – Rbex

0

複数のajaxリクエストが必要な場合もあります。ここに例があります。

var app = new Vue({ 
    el: '#app', 
    data: { 
     value: '', 
     admissions: [], 
     schoolyear: [] 
    }, 

    created: function(){ 

     this.ajaxAll() 

    }, 
    methods: { 

     ajaxAll: _.debounce(function(){ 
      var app = this 
      var admissions = 'admissions' 
      var schoolYear = 'schoolyear' 
      axios.all([this.getAllData('http://localhost/school/api/admissions', 'admissions'), this.getAllData('http://localhost/school/api/schoolyear', 'schoolyear')]); 


     }), 

     getAllData: function(url, value){ 
      var app = this 
      return axios.get(url) 
       .then(function(response){ 
        app[value] = response.data[value] 
        console.log(response.data.admissions) 
       }) 
     } 

    } 
}) 

@Bert Evansに寄稿しました。

関連する問題