Vue怎麼和AJAX和其他的方法結合在一起呀?
是這樣?還有如何解決和JQ的衝突呀?
$.ajax({ url : 「" , success : function(data){ new Vue({el: "#app",
data: data }) }})
建議把ajax寫在vue的methods里
var vm = new Vue({
el: "#app",
data: {
data: {}
},
methods:{
getData: function(){
$.ajax({
success: function(data) {
vm.data = data;
}
})
}
}
});
vm.getData();
做大型項目的時候肯定會配合 vue-router 和 vue-loader 之類
所以實際上一個vue 組件應該是這樣&....
&&}
&所以 完全可以在 methods 裡面寫一個方法 getData 然後 賦值給 data 里的 某個數據模型在ready 裡面 調用 getData 這個方法這樣當這個組件載入時便會自動去getData 了為什麼不用vue-resource啊
直接使用axios吧,現在官方都推薦使用它了,注意解決跨域問題就好了(如果不能再服務端設置的話,就試試withCredentials: true)。另外,非要使用jQuery的話,可以使用npm install jQuery後,在入口main.js中引入import $ from "jquery",這可能會與common.js衝突,然後在webpack.config.js中添加
plugins: [
// new webpack.optimize.CommonsChunkPlugin("common.js"),
new webpack.ProvidePlugin({
jQuery: "jquery",
$: "jquery"
})
],
基本上就能夠使用了。
本人也是新手,愚見:可以試試vue-resource,當然更推薦axios。語法很簡單,和jq的ajax類似。
這是 vue-resource
this.$http.post("url", data)
.then(response =&> {
//success do something
//可以在data里定義一個變數來接response的返回值。
//在created(vue1是ready)里調用可以在渲染完成前獲取到數據。
}, response =&> {
//error do something
})
可以將ajax寫在ready中,通過$.set設置data裡面的數組,不過要處理好this的衝突問題
var app = new Vue({
el: "#app",
ready: function () {
var that = this; //將this變數賦值給that,防止於ajax裡面的this衝突
$.ajax({
type: "get",
url: "book.json",
dataType: "json",
success: function (val) {
that.$set("books", val);
}
});
},
data: {
books: ""
}
})
推薦閱讀:
※src屬性綁定出錯?
※UI 框架的主題色一般怎麼實現的?
※關於Angular和vue的對話,對前端圈子到底起到什麼作用,能不能推進前端的發展?
TAG:JavaScript | Ajax | Vuejs | Vuex |