如图,点击跳转到左侧导航栏页面,选中了之后点击确认,返回时,不显示,代码在pages页面时,能够正常显示选中的项。代码在components组件中时,不显示选中的项。这是什么问题?下面代码是一部分代码,更详细的见代码片段
<!--pages/jobs/add/add-position/add-position.wxml-->
<view class="add-position-group">
<form bindsubmit="onSubmitEvent">
<expectation></expectation>
<button form-type="submit" type="primary" class="sunbmit-btn">保存配置</button>
</form>
</view>
// pages/jobs/add/add-position/add-position.js
const app = getApp();
const db = wx.cloud.database();
const _ = db.command;
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
async onLoad(options) {
await app.loadUserInfo();
},
/**
* 保存配置事件
*/
onSubmitEvent(event) {
console.log(event)
const that = this;
// 自动设置职位类型
this.autoSetExpectationName();
// 检查expectationName是否为空
if (!that.data.expectationName) {
wx.showToast({
title: '请选择职位类型',
icon: 'none'
});
return;
}
const uniqueid = Date.now() + Math.floor(Math.random()*100000);
const expectation = {
id:uniqueid,
expectationName: that.data.expectationName,
expectationCity: that.data.expectationCity,
expectationPosition: that.data.formData.jobs,
expectationIndustry: that.data.formData.industries,
}
console.log(expectation)
db.collection("resume").where({
_openid: app.globalData.openid
}).update({
data:{
expectation: _.push(expectation),
},
success:res=>{
console.log('添加成功', res)
wx.showToast({
title: '保存成功',
icon: 'success'
})
setTimeout(() => wx.navigateBack({}), 1500);
}
})
},
})
<!--components/expectation/expectation.wxml-->
<view class="expectation-container">
<view class="title">添加求职期望</view>
<view class="add-content">添加的求职期望不同,推荐的职位也不同</view>
<view class="add-list">
<view class="add-list-title">职位类型</view>
<view class="list-content" wx:if="{{showPartTimeOnly}}">
<view class="fixed-text">{{natures[0].name}}</view>
</view>
<view class="list-content" wx:elif="{{showFullTimeOnly}}">
<view class="fixed-text">{{natures[1].name}}</view>
</view>
<view class="list-content" wx:else>
<selector name="expectationName" array="{{natures}}" arrays="{{natures[0].name}}" bindcarporate="onCorporateEvent"></selector>
</view>
</view>
<view class="add-list">
<view class="add-list-title">其他期望城市</view>
<view class="list-content">
<city name="expectationCity" class="city" placeholder="{{expectationCity}}" bindCity="onCityEvent"></city>
</view>
</view>
<view class="add-list">
<view class="add-list-title">期望职位</view>
<view class="add-list-content" bindtap="onJobExpectations">
<input class="add-list-input" wx:if="{{!formData.jobsCount}}" placeholder="请选择期望职位" type="text" />
<view wx:else class="add-list-text">
<block wx:for="{{formData.jobs}}" wx:key="index">
<view class="text-list">
<view name="expectationPosition" class="tag">{{item}}</view>
<view class="jobCount" wx:if="{{formData.jobsCount > 1}}">、</view>
</view>
</block>
</view>
<icon class="icon"></icon>
</view>
</view>
<view class="add-list">
<view class="add-list-title">期望行业</view>
<view class="add-list-content" bindtap="onIndustryList">
<input class="add-list-input" wx:if="{{!formData.industriesCount}}" placeholder="请选择期望行业" type="text" />
<view wx:else class="add-list-text">
<block wx:for="{{formData.industries}}" wx:key="index">
<view class="text-list">
<view name="expectationIndustry" class="tag">{{item}}</view>
<view class="jobCount" wx:if="{{formData.industriesCount > 1}}">、</view>
</view>
</block>
</view>
<icon class="icon"></icon>
</view>
</view>
<view class="add-list">
<view class="add-list-title">薪资要求</view>
<view class="list-content">
<selector-tow name="income" wx:if="{{showPartTimeOnly || expectationName=='全职'}}" bindcarporate="onincomeEvent"></selector-tow>
<selector-tow name="income" wx:elif="{{showFullTimeOnly || expectationName=='临/兼职'}}" bindcarporate="onincomeEvent"></selector-tow>
</view>
</view>
</view>
// components/expectation/expectation.js
const app = getApp();
const db = wx.cloud.database();
Component({
/**
* 组件的属性列表
*/
properties: {},
/**
* 组件的初始数据
*/
data: {
natures: [{id: 0,name: '全职'}, {id: 1,name: '临/兼职'}],
expectationCity: '请选择工作城市',
showPartTimeOnly: false,
showFullTimeOnly: false,
expectationName: '',
formData: {
jobs: [],
jobsCount: 0,
industries: [],
industriesCount: 0
},
},
/**
* 组件生命周期
*/
lifetimes: {
attached() {
// 组件加载时获取数据
this.getExpectationField();
this.autoSetExpectationName()
}
},
/**
* 组件的方法列表
*/
methods: {
/**
* 职位类型选择事件
*/
onCorporateEvent(event) {
console.log(event)
this.setData({
expectationName: event.detail.index
})
},
/**
* 固定职位类型
*/
autoSetExpectationName: function () {
console.log("showPartTimeOnly", this.data.showPartTimeOnly)
console.log("showFullTimeOnly", this.data.showFullTimeOnly)
if (this.data.showPartTimeOnly) {
this.setData({
expectationName: '全职' // 注意:这里根据你的显示逻辑可能需要调整
});
} else if (this.data.showFullTimeOnly) {
this.setData({
expectationName: '临/兼职' // 注意:这里根据你的显示逻辑可能需要调整
});
}
// 如果两者都为false,则expectationName将由选择器设置
},
/**
* 城市选择事件
*/
onCityEvent(event) {
console.log(event);
var that = this;
var index = event.detail.index;
that.setData({
expectationCity: index,
})
},
/**
* 期望职位点击事件
*/
onJobExpectations(e) {
console.log(e)
const selected = encodeURIComponent(
JSON.stringify(this.data.formData.jobs)
);
console.log(selected)
console.log(this.data.formData.jobs)
wx.navigateTo({
url: `/pages/position-list/position-list?selected=${selected}&type=position`
});
},
/**
* 期望行业点击事件
*/
onIndustryList() {
const selected = encodeURIComponent(
JSON.stringify(this.data.formData.industries)
);
wx.navigateTo({
url: `/pages/industry-list/industry-list?selected=${selected}&type=industry`
});
},
/**
* 薪资要求选择事件
*/
onIncomeEvent(event) {
const index = event.detail.value;
this.setData({
incomeIndex: index,
selectedIncome: this.data.incomeOptions[index]
});
},
/**
* 获取数据
*/
async getExpectationField() {
try {
const expectationsRes = await db.collection("resume").where({
_openid: app.globalData.openid,
}).field({
expectation: true,
_id: false,
}).get();
console.log("获取期望字段数据", expectationsRes.data);
// 检查是否获取到数据
if (expectationsRes.data.length === 0) {
console.log("没有找到期望字段数据");
return;
}
// 获取expectation数组
const expectationValues = expectationsRes.data[0].expectation || [];
console.log("获取期望值数组", expectationValues);
// 处理数据并更新状态
this.processExpectationData(expectationValues);
// 保存完整数据到data中
this.setData({
// posimes: posimesRes,
expectationValues: expectationValues
});
} catch (error) {
console.error("获取数据失败:", error);
wx.showToast({
title: '获取数据失败',
icon: 'none'
});
}
},
/**
* 处理期望数据并更新显示状态
*/
processExpectationData(expectationValues) {
let fullTimeCount = 0;
let partTimeCount = 0;
// 统计全职和临/兼职数量
expectationValues.forEach(item => {
if (item.expectationName === '全职') {
fullTimeCount++;
} else if (item.expectationName === '临/兼职') {
partTimeCount++;
}
});
console.log(`全职数量: ${fullTimeCount}, 临/兼职数量: ${partTimeCount}`);
// 根据数量关系设置显示状态
this.setData({
showFullTimeOnly: fullTimeCount >= 5 && partTimeCount < 5,
showPartTimeOnly: partTimeCount >= 5 && fullTimeCount < 5
});
// 如果显示选择器,初始化选择值
if (!this.data.showFullTimeOnly && !this.data.showPartTimeOnly) {
if (expectationValues.length > 0) {
const item = expectationValues[0];
const natureIndex = this.data.natures.findIndex(n => n.name === item.expectationName);
if (natureIndex !== -1) {
this.setData({
natureIndex,
expectationName: item.expectationName
});
}
}
}
}
},
processExpectationData: function (expectationValues) {
let fullTimeCount = 0;
let partTimeCount = 0;
// 统计全职和临/兼职数量
expectationValues.forEach(item => {
if (item.expectationName === '全职') {
fullTimeCount++;
} else if (item.expectationName === '临/兼职') {
partTimeCount++;
}
});
console.log(`全职数量: ${fullTimeCount}, 临/兼职数量: ${partTimeCount}`);
// 根据数量关系设置显示状态
this.setData({
showFullTimeOnly: fullTimeCount >= 5 && partTimeCount < 5,
showPartTimeOnly: partTimeCount >= 5 && fullTimeCount < 5
});
// 如果显示选择器,初始化选择值
if (!this.data.showFullTimeOnly && !this.data.showPartTimeOnly) {
this.setData({
selectedNature: expectationValues.length > 0 ? expectationValues[0].expectationName : '全职'
});
}
}
})