如何为 AMP 未初始化变量设置默认值?
How to set a default value for an AMP uninitialized variable?
<input type="checkbox" [required]="(currentState == null) ? (true) : (false)">
amp-bind:[required] 的默认值与第一个表达式结果不匹配(true)。这可能会在下一次状态更改后导致意外行为。
编辑:也许更多的上下文可以帮助
<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 >
每次尝试分配给 [require](但它也代表 [checked],我猜,对于其他属性)一个值(静态或通过 var)都会得到绑定放大器错误。
<amp-state id="temp">
<script type="application/json">
{
"var": "general"
}
</script>
</amp-state>
(...) [required]="(currentState==null) ? privacySettings[temp.var].mp : privacySettings[currentState].mp" (...)
如果通过 'on' 属性设置 currentState,它会通过验证并正常工作。
您是否正在设置 required
属性以及 [required]
绑定?
试试这个:
<input type="checkbox"
[required]="(currentState == null ? 'true' : 'false')"
required="true">
另外,如果未定义变量,您可以使用它,
(myVar || 'defaultVal')
如果未定义 myVar
,则将使用值 defaultVal
。
但是设置默认值最正确的方法是像这样使用 <amp-state>
:
<amp-state id="props">
<script type="application/json">
{
"myVar": "blah"
}
</script>
</amp-state>
然后你可以通过给 amp-state
元素加上前缀 id
来使用这个变量,像这样:
props.myVar
编辑:以下对我有用
注:
1.在初始amp-state
元素中设置currentState
2.基本required
属性的默认值
<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>
编辑 2:当 currentState 尚未初始化时,以下内容也应该有效:
<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>
<input type="checkbox" [required]="(currentState == null) ? (true) : (false)">
amp-bind:[required] 的默认值与第一个表达式结果不匹配(true)。这可能会在下一次状态更改后导致意外行为。
编辑:也许更多的上下文可以帮助
<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 >
每次尝试分配给 [require](但它也代表 [checked],我猜,对于其他属性)一个值(静态或通过 var)都会得到绑定放大器错误。
<amp-state id="temp">
<script type="application/json">
{
"var": "general"
}
</script>
</amp-state>
(...) [required]="(currentState==null) ? privacySettings[temp.var].mp : privacySettings[currentState].mp" (...)
如果通过 'on' 属性设置 currentState,它会通过验证并正常工作。
您是否正在设置 required
属性以及 [required]
绑定?
试试这个:
<input type="checkbox"
[required]="(currentState == null ? 'true' : 'false')"
required="true">
另外,如果未定义变量,您可以使用它,
(myVar || 'defaultVal')
如果未定义 myVar
,则将使用值 defaultVal
。
但是设置默认值最正确的方法是像这样使用 <amp-state>
:
<amp-state id="props">
<script type="application/json">
{
"myVar": "blah"
}
</script>
</amp-state>
然后你可以通过给 amp-state
元素加上前缀 id
来使用这个变量,像这样:
props.myVar
编辑:以下对我有用
注:
1.在初始amp-state
元素中设置currentState
2.基本required
属性的默认值
<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>
编辑 2:当 currentState 尚未初始化时,以下内容也应该有效:
<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>