假设我有以下仅html元素:
<template bindable='value: Math.random()'>
${value}
</template>
<!-- In another component {Main} -->
<template>
<require from='./that-element'></require>
<that-element></that-element>
</template>
结果是主要组件中的空字符串。问题是如何为仅html元素定义默认值?
编辑:如果2个绑定需要具有相同的唯一默认值,则元素的默认值将不起作用。我可以让它自己独一无二,但我必须手动完成它。正在寻找像Math.random()
答案 0 :(得分:5)
bindable
标记上<template>
属性的内容被视为comma-separated list of strings。因此,您无法在那里设置默认值。
我可以想到两种方法:
<that-element value.bind="someVarFromParent"></that-element>
${value || 'default value'}
Gist演示:https://gist.run/?id=f0698d5b0066c3674c29c40d850217dc
答案 1 :(得分:2)
把我的2美分放在这里...我认为Marton用html唯一解决方案将其钉在了头上。我通常使用value.bind
方法,因为我的视图通常总是有vm
。因此,为了简化JayDi的响应(这是一个有效的响应),我为您创建了一个GistRun。
基本上,您将创建一个custom-elem
html文件和一个custom-elem
js文件。在html文件中,你会有这样的东西:
<template>
<h1>${value}</h1>
</template>
在js文件中,你有类似的东西:
import {bindable} from "aurelia-framework";
export class CustomElem {
@bindable value = "default value";
}
最后,您只需要在主要父文件中输入它,如下所示:
<template>
<require from="./custom-elem"></require>
<custom-elem></custom-elem>
<custom-elem value.bind="'myVal'"></custom-elem>
</template>
我刚添加了自定义元素的默认值。如果您愿意,可以将其保留为未定义。此外,您可以根据需要添加任意数量的属性。在我看来,这是解决这个问题的最简单方法,除非你的情况允许你使用html only方法。
此外,在这种情况下,我使用的是&#34; myVal&#34;的字符串。如果您想使用父vm中的变量,则只需取消单引号并使用该变量名称。
这里是正在运行的Gist,这样你就可以愚弄它: https://gist.run/?id=2eb14ecd2b0b859fd5d1a33b5ee229bd
答案 2 :(得分:0)
您可以在html-only元素中使用||
语句作为默认值:
<template bindable="param1, param2, param3">
<h1>${param1 || 'default 1'}</h1>
<h2>${param2 || 'default 2'}</h2>
<h3>${param3 || 'default 3'}</h3>
</template>