微信小程序 变量值不起作用
首先是页面传值:wx.navigateTo({url:'../doex/doex?radioshoworhide=true&multipleshoworhide=fals...
首先是页面传值:wx.navigateTo({ url: '../doex/doex?radioshoworhide=true&multipleshoworhide=false&torfshoworhide=false', })变量设置及接收数据:data: { radioshoworhide: false, multipleshoworhide: false, torfshoworhide: false, singleChoice:null, multiChoice:null, torfChoice:null, }, onLoad: function (options) { var that=this; that.setData({ multipleshoworhide: options.multipleshoworhide, torfshoworhide: options.torfshoworhide, radioshoworhide: options.radioshoworhide }); }wxml页面<text>{{radioshoworhide?'aha':'lll'}}</text><button class="hide{{radioshoworhide?'show':''}}">{{radioshoworhide}}</button><button class="hide{{multipleshoworhide?'show':''}}">{{multipleshoworhide}}</button><button class="hide{{torfshoworhide?'show':''}}">{{torfshoworhide}}</button>wxss页面.show{ display: block;}.hide{ display: none;}显示结果如下图:第二和第三个按钮没有被隐藏,但从按钮的值来看已经接受到 false的赋值,为什么class里面没有接受这个值,求指教,谢谢
展开
1个回答
展开全部
页面传值获得的"true"和"false"是字符串,不是布尔值,所以 <text>{{radioshoworhide?'aha':'lll'}}</text> 这里的radioshoworhide是按字符串来处理的,而如果直接拿字符串进行逻辑判断,则凡是有内容的字符串就等价于true,空字符串则等价于false,所以radioshoworhide的值不管是"true"还是"false",判断的结果都是true!
所以要改成这样 <text>{{radioshoworhide=='true'?'aha':'lll'}}</text>
当然,也可以在setData的时候就进行转换,这样wxml中就不需要修改。
补充一句:用url来传送逻辑值时,最好不要直接用true和false,因为接收方肯定是按字符串来处理参数的,而字符串的"true"和"false"其实都相当于true,所以最好用1来表示true(其他字符也可以的,只要不是空字符),而用空字符来表示false,比如
../doex/doex?radioshoworhide=1&multipleshoworhide=&torfshoworhide=
这样的话接收方如果接收到的参数值非空就表示true,空白就表示false
所以要改成这样 <text>{{radioshoworhide=='true'?'aha':'lll'}}</text>
当然,也可以在setData的时候就进行转换,这样wxml中就不需要修改。
补充一句:用url来传送逻辑值时,最好不要直接用true和false,因为接收方肯定是按字符串来处理参数的,而字符串的"true"和"false"其实都相当于true,所以最好用1来表示true(其他字符也可以的,只要不是空字符),而用空字符来表示false,比如
../doex/doex?radioshoworhide=1&multipleshoworhide=&torfshoworhide=
这样的话接收方如果接收到的参数值非空就表示true,空白就表示false
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询