Javascript 使用Ractive在多个选择中设置预选值

Javascript 使用Ractive在多个选择中设置预选值,javascript,ractivejs,Javascript,Ractivejs,我在Ractive中渲染了一个select multiple,其中包含所有可能选项的计算列表,效果非常好。但是我找不到一个正确的方法来预选值 到目前为止,我有一些类似于: data = [{ type: "Person", Name: "John", worksFor: [ "1", "2" ]},{ type: "department", id: "1", Name: "Sales" },{ type: "department", id

我在Ractive中渲染了一个select multiple,其中包含所有可能选项的计算列表,效果非常好。但是我找不到一个正确的方法来预选值

到目前为止,我有一些类似于:

data = [{
  type: "Person",
  Name: "John",
  worksFor: [
    "1",
    "2"
]},{
   type: "department",
   id: "1",
   Name: "Sales"
},{
   type: "department",
   id: "2",
   Name: "Marketing"
},{
   type: "department",
   id: "3",
   Name: "Accounting"
}]
new Ractive({
    el: '#list',
    template: DataTpl,
    data: {myData: data},
    computed: {
        DepartmentList () {
            //some code
            return list_of_all_Departments;
        },
        PersonsList () {
            //some Code
            return list_of_persons
        });
所以在我的模板中我尝试了

{{#PersonsList}}
<select multiple>
    {{#DepartmentList}}
        <option value="{{id}}" 
            {{#if _.includes(PersonsList.worksFor, id)}} selected{{/if}}>{{Name}}
        </option>
    {{/DepartmentList}}
</select>
{{/PersonsList}}

但这只是给了我一个失败的计算。有人知道如何获得这些预选吗?

您必须为select设置一个值,并将该值设置为默认值

这是Ractive偏离标准的原因之一。您需要在上添加一个value属性。所选的值变为的值。您将从中获取的数据类型取决于它是否是多个数据。如果是单选,则得到一个值。如果它是multipleselect,您将得到一个数组

设置预选值只是另一种方式。将数据中的一个值指定给的值,并假设这些值存在于上,则将选择它们。不需要模板损坏

Ractive.DEBUG=false; 风险值数据=[{ 类型:人,, 姓名:约翰, 工作地点:[ 1. 2. ] }, { 类型:部门,, id:1, 姓名:销售部 }, { 类型:部门,, id:2, 名称:市场营销 }, { 类型:部门,, id:3, 姓名:会计部 }]; 新词{ el:‘列表’, 模板:“模板”, 数据:{ 所选部门:[], myData:数据 }, 计算:{ 部门名单{ 返回这个。获取“我的数据”。filterv=>v.type=='department'; }, 人员名单{ 返回这个。获取'myData'。filterv=>v.type=='Person'; } } }; {{PersonList}} {{Name}} {{部门列表} {{Name}} {{/部门列表} {{/PersonsList}
对不起,我不明白。因为一个人可以为n个部门工作可能有多个值,所以我尝试循环使用这些选项并编写一个选定的值。我只是不知道如何确定正确的值。