【发布时间】:2017-01-27 12:46:29
【问题描述】:
关于 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-model 和 view 参数。那是对的吗?将value、data、placeholder 等参数传递给基于control.type 的自定义元素的最佳方式是什么?
使用我的解决方案编辑:
最后,Aurelia 的<compose> 似乎只适用于view、view-model 和model 属性。我的解决方案是像这样传递所有数据(可以是多个项目作为单个对象传递):
<compose view-model="resources/elements/${control.type}/${control.type}"
model.bind="{'control': control, 'model': model, 'readonly': readonly}">
</compose>
我做 发现有趣的是,当您使用model.bind 时,您不需要使用@bindable 装饰器来接收参数。它们在视图中立即可用。
【问题讨论】:
-
我也刚刚从 Ashley Grant 那里了解到,您不能将
@bindable参数与<compose>一起使用,并且如果您有一个仅视图元素,则视图连接到外部范围,但是如果你有一个视图模型,你需要通过model.bind。 -
我发现有趣的是,当你使用model.bind 时,你不需要使用@bindable 装饰器来接收参数。它们可以立即在视图中使用。 这仍然是真的吗? 我似乎无法找到一种方法让 Aurelia 将
model属性绑定到视图模型,而无需主动分配他们自己...
标签: aurelia aurelia-templating