【问题标题】:Add selected attribute to a option based on a expression in Aurelia根据 Aurelia 中的表达式将选定属性添加到选项
【发布时间】:2015-08-10 11:03:21
【问题描述】:

我的 Aurelia 视图中有一个 select html 标记(使用 select2),我想在其中基于布尔值将 selected 属性添加到 option 标记表达。表达式只会为真一次。这是我的代码(这很好用):

<select class="js-example-basic-single" style="width:200px;">
  <option repeat.for="region of personRegionDetail" value="${region.Id}">${region.Name}</option>
</select>

我正在我的 option 标签中寻找类似的东西(如果可能的话):

${if(region.Id === persondetail.RegionId){ selected }}

我也尝试过使用 jQuery,但这只会在我刷新页面时显示我选择的选项:

<script type="text/javascript">
  //Initialize select2
  $('select.js-example-basic-single').select2();
  //I tried this
  //The searched option value contains ${persondetail.RegionId} 
  $('select.js-example-basic-single').val("${persondetail.RegionId}").trigger("change");
</script>

我通过单击使用route-href="route:routename" 的链接从另一个视图访问该页面(如果它说明了什么)。

我的问题是如何解决这个问题以在我进入页面时显示所选选项?

编辑: 我需要在几毫秒后初始化 select2 以显示所选选项(可能我必须等待 API 响应)。这导致了 jQuery 的问题。

【问题讨论】:

    标签: jquery html jquery-select2 aurelia


    【解决方案1】:

    你必须使用selected.bind:

    <option repeat.for="region of personRegionDetail" value="${region.Id}" selected.bind="region.Id === $parent.Id">${region.Name}</option>
    

    Plunker:http://plnkr.co/edit/Uy6eQWZu6PrOwaXeArOx?p=preview

    【讨论】:

    • 谢谢,这正是我需要的!
    • 我需要在几毫秒(30 毫秒)后初始化 select2 才能正常工作。可能我需要等待 API 发送数据...
    • 如果你把你的代码放在 plnkr 中,我可以帮助你...你应该只在回调之后初始化,可能使用类似的 promise 或 smg。
    • 根据您的建议,我尝试在 Promise 中初始化它(在我得到数据之后),但似乎并没有解决问题。没有 select2(只使用一个简单的选择)它可以完美地工作,所以你的概念很好。我会就此写信给 Aurelia 团队。感谢您的帮助!
    • 请注意,由于 selected 是单向绑定,因此 selected.bind 将实例化单向绑定
    猜你喜欢
    • 1970-01-01
    • 2017-08-25
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 2011-08-13
    • 2015-08-30
    • 1970-01-01
    相关资源
    最近更新 更多