0

这可能有一个简单的解决方案,但我无法弄清楚。从 Semantic-UI 到 Fomantic-UI 后发生了变化,我需要帮助。

在初始化我要显示的下拉列表时,这在更早的时候起作用:

$('.ui.dropdown').dropdown('show',{                                 
  maxSelections:2  
});

但似乎这些设置被忽略了(在这种情况下为 maxSelections)。

如果我使用:

$('.ui.dropdown').dropdown({                                    
    maxSelections:2  
});

设置工作得很好。

工作 https://jsfiddle.net/ruznv83a/2/

不工作 https://jsfiddle.net/ruznv83a/1/

我将不胜感激任何帮助 :)

4

1 回答 1

0

如果我理解正确,问题在于切换到基于对象的参数传递到下拉模块中。查看源代码,在第 26 行左右,我们看到:

$.fn.dropdown = function(parameters) {
...

这是第一次宣布下拉功能的地方,以便您可以调用 $('selector').dropdown();。然后在第 50 行我们看到:

settings = ( $.isPlainObject(parameters) )
    ? $.extend(true, {}, $.fn.dropdown.settings, parameters)
    : $.extend({}, $.fn.dropdown.settings),

它正在查看“参数”的构成并决定如何解释它 - 基本上,如果参数是一个 JS 对象,则通过合并到下拉默认值中使用它,否则单独使用默认值。

回到您的测试,在以下情况下:

$('.ui.dropdown').dropdown('show',{                                 
  maxSelections:2  
});

您传入 2 个参数,并且 $.fn.dropdown 函数中仅使用第一个参数,因此根据您的结果忽略 maxSelections 选项。

如果是:

$('.ui.dropdown').dropdown({                                    
    maxSelections:2  
});

您提供的参数确实是一个普通对象,因此它具有所需的结果。

这当然是对您所看到的内容的技术解释,但它仍然留下一个问题“我如何在文档中找到它?” 我相信文档还有一些工作要做——我希望 FUI 团队能尽快赶上,因为他们所做的工作质量很高,而且文档正在破坏他们的工作,恕我直言。

同样作为一个观点,我认为转向 JS 对象参数方法是正确的方向。因此,虽然这对于任何来自 Semantic-UI 背景的人来说可能是一个“令人震惊的变化”,但当应用于所有 FUI 组件时,它将提供一种更标准的方法。我希望随着时间的推移,所有组件都会发生这种变化。

于 2020-01-28T09:30:34.487 回答