收藏
回答

在页面中能够显示选中的数量,代码写在组件中,就没有显示,是什么原因?

做了个筛选的功能,把代码写在页面中的时候,能够正常显示选中的数量,如图1。当代码写在components组件中时,就没有显示选中的数量。如图2,怎么解决?求大神帮忙

<!--pages/jobs/index/index.wxml-->  
<view class="tabbar-group">
    <segment class="tabbar-list" items="{{items}}" result="{{result}}" binditemchengde="onItemChengdeEvent" defaultIndex="0">
      <view slot="0" class="segment-page all-page">
      </view>
      <view slot="1" class="segment-page new-page">
        <view>2</view>
      </view>
      <view slot="2" class="segment-page near-page">
         <view>3</view>
      </view>
    </segment>
  </view>

组件代码

<!--components/segment/segment.wxml-->
<view class="segment-group">
   <view class="segment-header">
      <view class="segment-list">
         <block wx:for="{{items}}" wx:key="item">
            <view class="segment-item actvie" wx:if="{{currentIndex === index}}" bind:tap="onItemTapEvent" data-index="{{index}}">{{item}}</view>
            <view class="segment-item" wx:else bind:tap="onItemTapEvent" data-index="{{index}}">{{item}}</view>
         </block>
      </view>
      <view class="tabbar-right">
         <city class="city"></city>
         <view class="filter-group" bind:tap="onFilter">
            <view class="filter-title">筛选</view>
            <view class="felter-symbol" wx:if="{{formData.jobsCount}}">·</view>
            <view class="filter-number">{{formData.jobs}}</view>
            <icon class="icon"></icon>
         </view>
      </view>
   </view>
   <view class="segment-body">
      <block wx:for="{{items}}" wx:key="item">
         <slot name="{{index}}" wx:if="{{currentIndex===index}}"></slot>
      </block>
   </view>
</view>
// components/segment/segment.js
Component({
   options:{
      multipleSlots:true
   },
  /**
   * 组件的属性列表
   */
  properties: {
     items: {
        typeArray,
        value: []
     },
     defaultIndex:{
        type:Number,
        value:0
     }
  },
  /**
   * 组件的初始数据
   */
  data: {
      currentIndex:0,
      formData: {
        jobs: [],
        jobsCount'',
      }
  },
  lifetimes:{
      attached(){
         var that = this;
         that.setData({
            currentIndex:that.properties.defaultIndex
         })
      }
  },
  /**
   * 组件的方法列表
   */
  methods: {
     onItemTapEvent(event){
        var index = event.target.dataset.index;
        this.setData({
           currentIndex:index
        })
        var detail = {"index":index};
        var options = {}
        this.triggerEvent('itemchengde',detail,options);
     },
     onFilter(e){
      const selectedData = this.data.formData.jobs;
      console.log(this.data.formData.jobsCount);
      const selected = selectedData.length > 0
        ? encodeURIComponent(JSON.stringify(selectedData))
        : encodeURIComponent(JSON.stringify([]));
        console.log(selected);
      wx.navigateTo({
        url`/pages/position-list/position-list?selected=${selected}&type=position`
      });
    },
  }
})
回答关注问题邀请回答
收藏

1 个回答

  • 智能回答 智能回答 本次回答由AI生成
    2025-06-12
    有用
登录 后发表内容