如何使用输入组有条件地指定输入?

How to use input-group to specify input conditionally?

我正在尝试使用用户的默认地理位置信息除非她指定了不同的位置。因此,"What's happening" 应该在她的个人资料中传递地理位置信息。 "What's happening in Tulsa" 传递有关塔尔萨的地理位置信息。

我正在使用输入组来执行此操作:

 input-group (where) {
  requires (OneOf)
  collect {
    input (location) {
         min (Optional) max (One)
         type (viv.geo.NamedPoint)
          default-select {
             with-rule {
               select-first
            }
        }
      }
     input (myLocation) {
       min (Optional) max(One)
       type (viv.geo.GeoPoint)

       default-init {
         if ($user.currentLocation.$exists) {
           intent {
             goal: geo.GeoPoint
             value-set: geo.CurrentLocation { $expr ($user.currentLocation) }
           }
         } 
       }
     }
    }
  }

这有效。

但我想知道是否有更好的方法来做到这一点?有什么方法可以用更标准的条件逻辑来做到这一点(比如 if/then 或 unless 动作中的语句?

您可能想尝试使用 default-init,如果提供 none,它会提供默认输入:

input (myLocation) {
       min (Required) max(One)
       type (viv.geo.GeoPoint)

       default-init {
         if ($user.currentLocation.$exists) {
           intent {
             goal: geo.GeoPoint
             value-set: geo.CurrentLocation { $expr ($user.currentLocation) }
           }
         } 
       }