1

我需要采取哪些额外的步骤来使用viv.self库将日期选择器的初始值设置为用户的生日?这是处理这个问题的最佳地点吗?目前我将默认设置为 30 年前。

render {
date-picker {
  // Default Date -30 Years (viv.self Birthday Option)
  initial-value ("subtractDuration(now().date, 'P30Y')")
  restrictions {
    // allow selection 80 Years Ago
    min-allowed ("subtractDuration(now().date, 'P80Y')")
    // to allow selection 18 Years Ago
    max-allowed ("subtractDuration(now().date, 'P18Y')")
  }
}

}

4

1 回答 1

0
  1. 您可以使用 amatch-pattern来实现这一点。
  2. 生日是 viv.contact 库的一部分,但在 viv.self 库中不可

在您的操作中,创建一个额外的类型属性time.Date(或带有role-ofof的概念time.Date)来保存生日。

下面是代码的样子。

action (GetBirthDate) {
  type(Constructor)
  description (Collect the date selected by a user)

  collect {

    input (usersBirthday) {
      type (BirthDate)
      min (Required) max (One)
      default-init {
        intent {
        // TO-DO Get the birthday with an intent
        }
      }
    }

    // This input will hold the value entered by the user
    computed-input (birthDate) {
      type (BirthDate)
      min (Required) max (One)
      compute {
        intent {
          goal: BirthDate
        }
      }
    }
  } output (BirthDate)
}

上面代码中使用的 BirthDate 概念如下所示

structure (BirthDate) {
  description (__DESCRIPTION__)
  role-of (time.Date)
}

您的输入视图将如下所示。这定义了match-pattern当我们需要 BirthDate 的输入视图并且 BirthDate 用作返回到操作的输入时调用的。

在此处查看匹配模式:https ://bixbydevelopers.com/dev/docs/dev-guide/developers/customizing-plan.match-patterns

input-view {
  match: BirthDate (this) {
    to-input {
      GetBirthDate (action)
    }
  }


  render {
    date-picker {
      initial-value (action.usersBirthday)
      restrictions {
        // allow selection 80 Years Ago
        min-allowed ("subtractDuration(now().date, 'P80Y')")
        // to allow selection 18 Years Ago
        max-allowed ("subtractDuration(now().date, 'P18Y')")
      }
    }
  }
}
于 2019-03-02T00:37:49.860 回答