Amp html 如何为未初始化的AMP变量设置默认值?

Amp html 如何为未初始化的AMP变量设置默认值?,amp-html,Amp Html,amp bind:[required]的默认值与第一个表达式结果(true)不匹配。这可能导致下一个状态更改后出现意外行为 编辑:也许更多的上下文会有所帮助 <input type="checkbox" [required]="(currentState == null) ? (true) : (false)"> { “一般”:{ “mp”:“必需”, “p1”:错误, “p5”:错误 }, “具体”:{ “m

amp bind:[required]的默认值与第一个表达式结果(true)不匹配。这可能导致下一个状态更改后出现意外行为

编辑:也许更多的上下文会有所帮助

<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>