Amp html 如何为未初始化的AMP变量设置默认值?
amp bind:[required]的默认值与第一个表达式结果(true)不匹配。这可能导致下一个状态更改后出现意外行为 编辑:也许更多的上下文会有所帮助Amp html 如何为未初始化的AMP变量设置默认值?,amp-html,Amp Html,amp bind:[required]的默认值与第一个表达式结果(true)不匹配。这可能导致下一个状态更改后出现意外行为 编辑:也许更多的上下文会有所帮助 <input type="checkbox" [required]="(currentState == null) ? (true) : (false)"> { “一般”:{ “mp”:“必需”, “p1”:错误, “p5”:错误 }, “具体”:{ “m
<input type="checkbox" [required]="(currentState == null) ? (true) : (false)">
{
“一般”:{
“mp”:“必需”,
“p1”:错误,
“p5”:错误
},
“具体”:{
“mp”:错,
“p1”:“必需”,
“p5”:“必需”,
“ck”:假
}
}
每次尝试分配给[require](但它也代表[checked],我猜,代表其他属性)一个值(静态或通过var)都会得到bind-amp错误
<amp-state id="privacySettings">
<script type="application/json">{
"general": {
"mp": "required",
"p1": false,
"p5": false
},
"specific": {
"mp": false,
"p1": "required",
"p5": "required",
"ck": false
}
}
</script>
</amp-state>
<div class="privacy">
<div id="pmaindiv">
<input on="tap:err_mess.hide" role="mainmandatoryprivacy" tabindex="1" type="checkbox" name="main-privacy" id="pmain" class="pmain" value="1" [required]=privacySettings[currentState].mp [checked]=privacySettings[currentState].ck >
{
“var”:“一般”
}
(…)[required]=“(currentState==null)?privacySettings[temp.var].mp:privacySettings[currentState].mp“(…)
如果通过“on”属性设置currentState,则它通过验证并正常工作。您是否设置了
必需的属性以及[required]
绑定
试试这个:
<amp-state id="temp">
<script type="application/json">
{
"var": "general"
}
</script>
</amp-state>
(...) [required]="(currentState==null) ? privacySettings[temp.var].mp : privacySettings[currentState].mp" (...)
如果未定义myVar
,则将使用值defaultVal
但是设置默认值的最正确方法是如下所示使用
:
(myVar || 'defaultVal')
<amp-state id="props">
<script type="application/json">
{
"myVar": "blah"
}
</script>
</amp-state>
编辑:以下是我的作品
注:
1.在初始amp状态下设置currentState
2.基本必需属性的默认值
props.myVar
{
“当前状态”:“一般状态”,
“一般”:{
“mp”:“必需”,
“p1”:错误,
“p5”:错误
},
“具体”:{
“mp”:错,
“p1”:“必需”,
“p5”:“必需”,
“ck”:假
}
}
编辑2:当currentState尚未初始化时,以下操作也应起作用:
<amp-state id="privacySettings">
<script type="application/json">
{
"currentState":"general",
"general": {
"mp": "required",
"p1": false,
"p5": false
},
"specific": {
"mp": false,
"p1": "required",
"p5": "required",
"ck": false
}
}
</script>
</amp-state>
<div class="privacy">
<div id="pmaindiv">
<input role="mainmandatoryprivacy" tabindex="1" type="checkbox" name="main-privacy" id="pmain" class="pmain" value="1"
required="required"
[required]=privacySettings[privacySettings.currentState].mp
>
</div>
</div>
{
“一般”:{
“mp”:“必需”,
“p1”:错误,
“p5”:错误
},
“具体”:{
“mp”:错,
“p1”:“必需”,
“p5”:“必需”,
“ck”:假
}
}
{
“var”:“一般”
}
太好了。看来“required=”required“属性是必需的。@rodders,您将如何更改/更新该默认值?
<amp-state id="privacySettings">
<script type="application/json">
{
"currentState":"general",
"general": {
"mp": "required",
"p1": false,
"p5": false
},
"specific": {
"mp": false,
"p1": "required",
"p5": "required",
"ck": false
}
}
</script>
</amp-state>
<div class="privacy">
<div id="pmaindiv">
<input role="mainmandatoryprivacy" tabindex="1" type="checkbox" name="main-privacy" id="pmain" class="pmain" value="1"
required="required"
[required]=privacySettings[privacySettings.currentState].mp
>
</div>
</div>
<amp-state id="privacySettings">
<script type="application/json">
{
"general": {
"mp": "required",
"p1": false,
"p5": false
},
"specific": {
"mp": false,
"p1": "required",
"p5": "required",
"ck": false
}
}
</script>
</amp-state>
<amp-state id="temp">
<script type="application/json">
{
"var": "general"
}
</script>
</amp-state>
<div class="privacy">
<div id="pmaindiv">
<input role="mainmandatoryprivacy" tabindex="1" type="checkbox" name="main-privacy" id="pmain" class="pmain" value="1"
required="required"
[required]=(currentState==null?privacySettings[temp.var].mp:currentState)
>
</div>
</div>