【问题标题】:Filter a dynamically fetched dropdown list using CoffeeScript使用 CoffeeScript 过滤动态获取的下拉列表
【发布时间】:2017-10-03 18:17:19
【问题描述】:

我最近继承了一个项目,其中一些表单使用 CoffeeScript 来动态获取和发布数据。 CoffeeScript 将表格按不同的问题进行划分。我试图处理的一个问题是有一个下拉列表,其中包含通过 API 调用动态获取的选项。

CoffeeScript:

 new QS.JBChoice
    name: 'PrimaryJob'
    questionText: 'What is your primary job (required)?'
    maximumSelectionSize: 1
    choiceID: 'Job_Choice'
    skipLogic: (context) -> JobSkip(context)
    validateLogic: (validator, context) -> JobValidate(validator, context, 'Primary Job Required')
    questionID: 16

呈现表单时,会出现一个下拉列表,其中包含动态获取的数据。现在我想从此下拉列表中获取数据并对其进行过滤,以便仅显示特定选项。

应注意,作业类型的每个选项都有特定的整数值,这些值在进行 API 调用时会被获取。如果选择了特定值,我实际上有代码可以防止出现此问题。

用 CoffeeScript 跳过问题:

 skipLogic: (context) -> JobSkipLogic(context)

 JobSkipLogic = (context) ->
if !context.answers.Jobs?
    return true
jobs = choiceAsideFrom(context.answers.Jobs, [100, 105, 110, 115])    
not jobs

choiceAsideFrom = (answer, choices) ->
    count = numOverlaps(answer, choices)
    answerCount = answer.split(',').length
    count != -1 && answerCount > 0 && count < answerCount

如您所见,Jobs 由上面自定义 choiceAsideFrom 函数中传递的代码标识。

我想知道是否可以使用类似的方法通过这些标识符过滤这些作业类型。

任何帮助将不胜感激!

【问题讨论】:

    标签: jquery coffeescript


    【解决方案1】:

    很难说出这里到底发生了什么(即不确定numOverlaps 是什么,我不知道Job 模型需要什么)。但是,如果您正在寻找一种方法来帮助您按类型标识符过滤 Jobs 列表,那么您有几个选择:

    typeIdentifierToFilterBy = 42
    # Something like lodash or underscore's filter method
    jobsOfType = _.filter(listOfJobs, {type: typeIdentifierToFilterBy})
    
    # Or the JavaScript Array filter method
    jobsOfType = listOfJobs.filter((job)-> job.type is typeIdentifierToFilterBy)
    
    # Or CoffeeScript comprehension
    jobsOfType = (job for job in listOfJobs when job.type is typeIdentifierToFilterBy)
    

    不完全确定确切的问题,但希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      • 2015-02-07
      • 2011-10-26
      • 2011-06-17
      相关资源
      最近更新 更多