icon的属性中不能使用三元运算符吗
发布于 5 年前 作者 tsun 2104 次浏览 来自 问答

数据属性设置如下:

wxml中代码如下:

当把usr.ok设置为true也不会显示icon。

但是如果在函数中使用this.setData就会正常显示。很奇怪,不知道为什么。

以上都是在1.01.171018的上一个版本编辑器里面发现的

7 回复

是否有示例代码呢。

我只知道image的src有这个BUG;刚开始渲染页面的时候渲染到image标签 里面是空值会报错, type 这个还没有试过!!

demo如下:

wxml文件:

<icon type='{{usr.ok?usr.succIcon:usr.warnIcon}}' color='{{usr.ok?usr.succCol:usr.warnCol}}'></icon>

js代码有两个文件:

第一个:pppp.js

function test(){
}
test.prototype={
  constructor:test,
  ok: true,
  succIcon: 'success',
  warnIcon: 'warn',
  succCol: 'green',
  warnCol: 'red'
}
 
module.exports=test

第二个:index.js

var test=require('pppp.js')
var app = getApp()
Page({
  data: {
  },
  onLoad: function () {
    this.setData({
      usr: new test()
    })
    console.log(this.data)
    }
})

这样就会出现上述问题。

2楼的方法我试过了,不行。也不知道为什么那个截图会是那样,后来的截图是这样的

我这样写出现问题的原因是不是在onload时期更改了数据,而这个时候view已经初始化好了(生命周期没掌握好)?

那你就在type 前面写一个 wx:if<icon wx:if="{{usr.ok}}" type=’{{usr.ok?usr.succIcon:usr.warnIcon}}’ color=’{{usr.ok?usr.succCol:usr.warnCol}}’></icon> 试试!

不行。我说一下的我理解,不知道对不对。

这张图里面的send initial data是将page中的data发送过去(我个人理解的,不知道是不是准确),然后view线程进行第一次渲染。按理说在onload中初始化data,应该能被第一次渲染。但是出现这个bug不知道为什么

usr.ok==true?usr.successicon.icon:usr.warnicon.icon试试!还有你两个icon的值都是success!

回到顶部