收藏
回答

动态设置view的高度不生效是什么原因?

<view class="main" style="height: {{mainHeight}}">

<scroll-view id="scrollView" style="height: {{scrollHeight}}" bindscroll="scroll" scroll-y="true" scroll-with-animation="true" scroll-into-view="{{toView}}">

JS:

data: {

mainHeight: '100%',

scrollHeight: '100%',

},

onReady: function () {

wx.createSelectorQuery()

.select('.main')

.boundingClientRect((res) => {

console.log(res);

this.setData({

mainHeight: res.height + 'px',

scrollHeight: res.height + 'px',

});

})

.exec();

},

----------------------------------------------------------------------

因为我这边用的是vantweappUI,想用他的Sticky 粘性布局(当某个元素滑动到可视区域顶部时,悬浮置顶),

但是还有锚点功能,这个还是scrollview的比较友好,想用锚点就需要指定scrollview和他的上级父元素必须指定高度,这样高度就没法自适应(view里面内容有点多),高度写死后粘性布局就失效了,

动态绑定style在onready内获取高度然后重新赋值,缺不生效

回答关注问题邀请回答
收藏

3 个回答

  • 俞哄哄💻
    俞哄哄💻
    2020-05-09

    应该是你this的作用域的问题导致没有正确赋值

    可以let _this = this;

    这边使用_this尝试下

    若有帮助请帮忙点个"有用"谢谢👇👇

    2020-05-09
    有用 1
    回复
  • 纸玫瑰
    纸玫瑰
    2020-05-09

    再onReady里加consloe.log(111111) 看看有打印么 估计是onReady没被调用 可以写道onshow 或onload

    2020-05-09
    有用
    回复 3
    • 啷咯哩咯啷
      啷咯哩咯啷
      2020-05-09
      都调用了,data里面的值也改变成了实际高度6000+,就是wxml标签上的style还是原来的100%
      2020-05-09
      回复
    • 纸玫瑰
      纸玫瑰
      2020-05-09回复啷咯哩咯啷
      this.setData({

      mainHeight: res.height + 'px',

      scrollHeight: res.height + 'px',

      });

      你这里的this.setData不对吧?    onRead方法首行应该加个 var that = this 吧 然后that.setData
      2020-05-09
      回复
    • 啷咯哩咯啷
      啷咯哩咯啷
      2020-05-09
      this指向没问题,setData也生效了
      2020-05-09
      回复
  • AKA. 皮卡超
    AKA. 皮卡超
    2020-05-09

    你直接给个可运行的代码片段不好吗?

    https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    2020-05-09
    有用
    回复
登录 后发表内容
问题标签