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,一个绑定国家数组,一个绑定城市数组。代码需求:每当国家选择改变时,自动选中该国的第二个城市?比如选择美国,城市默认选中第二项“华盛顿”,或者选择日本,则城市选中“大阪”。如何做到呢?

13 回复

最开始的结构不用变

<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

不客气, 互相学习,

问题解决了。感谢参与的各位,特别感谢楼上的 狼哥Army 和 朱。关键语句如下:

<option for="{{ shi }}" selected="{{ $idx == sedIndex }}" value="{{ $idx }}"> {{ $item }} </option> //sedIndex 是JS中一个变量。

只要改变sedIndex,就能指定select的某个option为选中。

问题还是没有解决。上面修改数据结构,实现了默认状态下指定某项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将作为默认选中项。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!