奥里莉亚组成

标签 aurelia aurelia-templating

有关 Aurelia 的 <compose> 的快速问题元素。我本来希望用它来插入自定义元素作为表单控件,如下所示:

<!-- Loop through form controls -->
<div class="form-group" repeat.for="control of controls">
  <label><span t="${control.label}"></span></label>
  <compose view-model="resources/elements/${control.type}/${control.type}" 
    value.bind="control.value" data.bind="control.data" placeholder.bind="control.placeholder"></compose>
</div>

但是,它开始看起来像 <compose>元素仅限于仅接受 model , view-modelview参数。那是对的吗?传递 value 等参数的最佳方式是什么, data , placeholder我的自定义元素基于 control.type

使用我的解决方案进行编辑:

最后,Aurelia 的 <compose> 似乎出现了。仅适用于 view , view-modelmodel属性。我的解决方案是传递所有数据(可以是作为单个对象传递的多个项目),如下所示:

<compose view-model="resources/elements/${control.type}/${control.type}" 
         model.bind="{'control': control, 'model': model, 'readonly': readonly}">
</compose>

发现有趣的是,当您使用model.bind时,您不需要使用@bindable装饰器接收参数。它们可以立即在 View 中使用。

最佳答案

使用 model.bind 怎么样?

<!-- Loop through form controls -->
<div class="form-group" repeat.for="control of controls">
  <label><span t="${control.label}"></span></label>
  <compose view-model="resources/elements/${control.type}/${control.type}"
    model.bind="control"></compose>
</div>

然后, View 模型可以从其 model 属性访问 valuedataplaceholder

关于奥里莉亚组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41894323/

相关文章:

javascript - 修改函数表达式中的类变量

javascript - 是否有 Aurelia 等同于 Angular 2 的本地模板变量?

javascript - 相对于 Aurelia.js 中的 ng-include

javascript - aurelia 1.0 中的可替换属性是否已过时?

选择列表上的 Aurelia 验证

dom - Aurelia - 从生成的 DOM 元素中访问 ViewModel 函数/绑定(bind)

testing - 检测通过模板生成的文本框的问题

html - Aurelia:完整性检查模板 html?

aurelia - 在运行时更改元素类型