关于网友提出的“ (vue.js)为什么Vue组件中的data是一个函数。”问题疑问,本网通过在网上对“ (vue.js)为什么Vue组件中的data是一个函数。”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: (vue.js)为什么Vue组件中的data是一个函数。
描述:比如这个例子中的data():
为什么不直接写成
data() {
menu: MENU.data,
poi: POILIST.data
},
解决方案1:你看错了吧,是对象啊
这样写:
data: function(){
return {};//这里return的是对象啊
}
或者这样写:
data() {
return {};//这里return的是对象啊
}
解决方案2:这种写法我学的时候官方文档已经不是这样的了,可能是旧版本的写法。
现在是对象方式写法,截一段项目代码给你看看。
var vm = new Vue({
el:'#content',
data:{
curpageid:window.location.search.substr(4),//获取url的id
prizealldata:[],//全部人员名称
nextprize:1,//可否继续抽奖 0不可以 1可以
prizeCount:'选择奖项',//奖项下拉菜单
prizeNewCount:'',//新中奖人数
viewCount:'',//显示新中奖人数
curPrizeindex:-1,//当前奖项的索引
curMode:'产生方式',//更换产生方式
allModedata:[],//原始全部产生方式阵列 用于同步更新数据
allPrizeman:[],//原始全部中奖人数阵列 用于同步更新数据
curPrizepic:'',//当前奖品图片
generatingMode:[
'逐一产生','一次产生'
],//产生方式
awardId:'',//奖项id
lotterybtntext:'抽奖',//按钮内容
lotterybtnstep:0,//逐一抽奖,btn状态,text内容 0:抽奖,1:停止抽奖 2:抽奖(继续抽奖),3:已结束
lotterybtnonce:0,//一次性抽奖,btn状态,text内容 0:抽奖,1:抽奖中,2:已结束
showname:[],//显示转动人员
winningname:[],//已中奖人员列表
lotteryData : [],//初始化全部信息
awardsList:[],//全部奖项信息
winmancount:0//中奖总人数
},
created:function(){
var curthis = this;
$.ajax({
type:"post",
url:"",
async:true
}).done(function(result){
curthis.lotteryData = result.data;
curthis.awardsList = result.data.wxAwards;
curthis.winmancount;
$.each(result.data.wxAwards,function(i,n){
curthis.winmancount = curthis.winmancount+n.prizeMan;
curthis.allModedata.push(n.generatingMode)
curthis.allPrizeman.push(n.prizeMan)
})
})
this.addminDisabled();
},
methods:{
//转动
changename:function(lotteryman,showname){
showname = [];
$.each(lotteryman,function(i,n){
if(n.manUserId !== null){
showname.push(n.manName+'@'+n.manUserId)
}else{
showname.push(n.manName)
}
});
}
},
watch:{
'prizeCount':function(newval,oldval){
if(newval == '选择奖项'){
this.prizeNewCount = '';
}else{
this.prizeNewCount = parseInt(newval.split('@')[0]);
this.awardId = parseInt(newval.split('@')[1]);
if(this.viewCount === ''){
this.viewCount = this.prizeNewCount;
}else{
this.prizeNewCount = this.viewCount;
}
}
},
'winningname':function(){
var j = 200;
var i = '';
$.each($('.right-side').find('.winingman'),function(){
i=$(this).index();
tt=function(id){
$('.right-side').find('.winingman').eq(id).show();
}
setTimeout('tt('+i+')',j);
j=j+200;
})
}
}
})
解决方案3:其实我觉得官方给那个例子根本就不成立
像下面这样写不是一样的么
var MyComponent = Vue.extend({
data: { a: 1 }
})
解决方案4:http://cn.vuejs.org/guide/com...
以上介绍了“ (vue.js)为什么Vue组件中的data是一个函数。”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3310934.html