HarmonyOS鸿蒙Next中js当option组件绑定数组时,如何指定某项为选中?
HarmonyOS鸿蒙Next中js当option组件绑定数组时,如何指定某项为选中? 我属于开发者小白,用Js类Web开发范式中,遇到难题求助。先上代码:
<div class="container">
<select id="Sel_guo" ref="Sel_guo" @change="Sel_guo()">
<option for="{{ guo }}" tid="id" value="{{ $idx }}">{{ $item }}</option>
</select>
<select id="Sel_shi" ref="Sel_shi" onchange="Sel_shi()">
<option ref="$idx" for="{{ shi }}" tid="id" value="{{ $idx }}">{{ $item }}</option>
</select>
</div>
//js代码
export default {
data: {
guo: ["中国", "美国", "德国", "日本"],
shi0: [
["北京", "上海", "广州", "深圳","武汉"],
["纽约", "华盛顿", "芝加哥", "休斯顿"],
["柏林", "汉堡", "慕尼黑"],
["东京", "大阪", "名古屋", "神户"],
],
shi: new Array,
},
onInit() {
this.shi = this.shi0[0];
},
Sel_guo(e){
this.shi = this.shi0[e.newValue];
}
}
我用两个select组件,其中的option,一个绑定国家数组,一个绑定城市数组。代码需求:每当国家选择改变时,自动选中该国的第二个城市?比如选择美国,城市默认选中第二项“华盛顿”,或者选择日本,则城市选中“大阪”。如何做到呢?
最开始的结构不用变
<option ref="$idx" for="{{ (index, value) in shi }}" selected="{{ index ==1}}" tid="id" ...
index是for循环的角标 value
相当于shi[index]
当index=1
时被选中
更多关于HarmonyOS鸿蒙Next中js当option组件绑定数组时,如何指定某项为选中?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
真棒!按你的方法,成功了。selected="{{ index ==1}}"
可以实现默认选中第二项。受你的思路的启发,不用改for="{{ shi }}"
,仍用for="{{ shi }}"
,再直接用selected="{{ $idx == 1 }}"
就行。再进一步,把1改为js中的某个变量,给该变量赋值,就可以动态指定option选中项。经我实测,成功了。这个方法太简单了,不用修改数组结构,语句简明,代码量小。很好!再次感谢你!!,
按照楼上狼哥Army的方法,我修改了数据结构:
shi0: [
[
{"label":"北京", "selected": false},
{"label":"上海", "selected": true},
{"label":"广州", "selected": false},
{"label":"深圳", "selected": false},
{"label":"武汉", "selected": false},
],
[
{"label":"纽约", "selected": false},
{"label":"华盛顿", "selected": true},
{"label":"芝加哥", "selected": false},
{"label":"休斯顿", "selected": false},
],
[
{"label":"格林", "selected": false},
{"label":"汉堡", "selected": true},
{"label":"慕尼黑", "selected": false},
],
[
{"label":"东京", "selected": false},
{"label":"大阪", "selected": true},
{"label":"名古屋", "selected": false},
{"label":"神户", "selected": false},
],
]
又修改了hml中的数据绑定语句:
<option ref="$idx" for="{{ shi }}" value="{{ $idx }}" selected="{{$item.selected}}" >{{ $item.label }} </option>
成功实现了指定某项option为选中的目标。非常感谢狼哥Army。
但是,感觉有点美中不足,因为修改了数据结构,数据变复杂了。我的实际数据是国家有上百个,城市也几百个。用以上的数组结构,感觉很复杂、冗余。
难道没有更简单的方法了吗?比如,通过selectedIndex指定,或者通过option的索引号、Value等指定。请高手指教。
以你目前的数据结构很难实现, 你可以修改一下数据结构
shi0:[
[
{"label":"北京", "selected": false},
{"label":"上海", "selected": true},
{"label":"广州", "selected": false},
{"label":"深圳", "selected": false},
{"label":"武汉", "selected": false}
],
.......
]
非常感谢。按照你的方法,修改了数据结构,修改了hml中的数据绑定语句,成功实现了。真是高手,再次感谢。
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17
不客气, 互相学习,
问题还是没有解决。上面修改数据结构,实现了默认状态下指定某项option为选中的目标。这时,只要城市选择框的选中项没有改变,国家选择框改变了,城市选择框都能选中第二项。但是,当城市选择框选中项改变了如变为第三项,国家选择改变时,城市框并没有再选中第二项,没有达到要求的目标。
总的来说就是:如何通过代码,指定select的某个option为选中?(option是通过for绑定数组生成的。)摸索了很久,也找不到方法。请大家支支招吧。
我也想知道怎么选择才能做到,
欢迎开发小伙伴们进来帮帮楼主
在HarmonyOS鸿蒙Next中,使用JavaScript开发时,若要将<option>
组件绑定数组并指定某项为选中,可以通过设置selected
属性来实现。假设你有一个数组options
,并且你想让数组中的某一项默认选中,可以在渲染<option>
时,通过判断当前项是否为要选中的项,来动态设置selected
属性。
例如:
const options = ['Option 1', 'Option 2', 'Option 3'];
const selectedOption = 'Option 2';
const selectElement = document.createElement('select');
options.forEach(option => {
const optionElement = document.createElement('option');
optionElement.value = option;
optionElement.text = option;
if (option === selectedOption) {
optionElement.selected = true;
}
selectElement.appendChild(optionElement);
});
document.body.appendChild(selectElement);
在这个例子中,selectedOption
变量指定了默认选中的项。在遍历数组时,如果当前项与selectedOption
匹配,则设置selected
属性为true
,从而实现默认选中。
在HarmonyOS鸿蒙Next中,使用<option>
组件绑定数组时,可以通过selected
属性指定默认选中的项。假设数组为options
,你可以在<option>
标签中设置selected
属性为true
来指定默认选中项。例如:
<select>
<option value="1">Option 1</option>
<option value="2" selected>Option 2</option> <!-- 默认选中此项 -->
<option value="3">Option 3</option>
</select>
在数据源中,将需要选中的项的selected
属性设置为true
:
data: {
options: [
{ value: '1', label: 'Option 1', selected: false },
{ value: '2', label: 'Option 2', selected: true },
{ value: '3', label: 'Option 3', selected: false }
]
}
这样,Option 2
将作为默认选中项。