Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用knockoutJS获取下拉列表_Javascript_Jquery_Knockout.js - Fatal编程技术网

Javascript 使用knockoutJS获取下拉列表

Javascript 使用knockoutJS获取下拉列表,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我正在尝试让jquery插件与ko一起工作。我已经连接了自定义绑定处理程序,但下拉列表中不会填充选项。请检查我的小提琴: 谢谢你的帮助。谢谢 这是因为您在绑定KnockoutJS之前创建了下拉菜单。这个下拉列表是如何工作的?它创建额外的div和span,用于复制select和create美观列表的内容。在应用绑定之后,它们会修改select(正如它们应该做的那样),但是下拉列表不会更新,因为这个库是静态的,即它只在调用时复制select的内容 我已经更新了你的,所以你可以看到临时修复。我的意思是

我正在尝试让jquery插件与ko一起工作。我已经连接了自定义绑定处理程序,但下拉列表中不会填充选项。请检查我的小提琴:


谢谢你的帮助。谢谢

这是因为您在绑定KnockoutJS之前创建了下拉菜单。这个下拉列表是如何工作的?它创建额外的div和span,用于复制select和create美观列表的内容。在应用绑定之后,它们会修改select(正如它们应该做的那样),但是下拉列表不会更新,因为这个库是静态的,即它只在调用时复制select的内容


我已经更新了你的,所以你可以看到临时修复。我的意思是它现在可以工作了,绑定是在创建下拉列表之前应用的。唯一的问题是更改
viewModel
中的
options
字段不会影响下拉列表。您可能需要做的是使用。您必须监视对
选项
字段的更改,如果发生更改,您必须重新创建下拉列表。这至少是一个简单的方法。

@奇怪的答案适用于大多数静态内容,但适用于任何使用模板的动态内容,例如
如果
foreach
绑定,或者您需要支持基础数据更新,例如更多复选框选项“突然”可用,则它将不起作用

apply
的一个示例,可用于包装更简单的jQuery调用。只需将更多成员添加到
控件
,即可使其在绑定中可用

但是,jQuery下拉列表的情况有点棘手,因为您显然希望使用内置的
选项
处理程序,但需要在
选项
处理程序运行后运行
$。下拉列表
处理程序创建jQuery所依赖的DOM元素,我们总是在正确的语境中被召唤


根据我的使用经验(我们的项目使用了大约10-15个自定义绑定),您平均需要10-20行实际的JS。如果你开始膨胀到+100行,我发现重构和重新思考是个好主意。我希望这会有所帮助:-)我已经在一个主要的UI实现项目中使用了Knockout几个月了,我真的学到了很多东西,我对这些东西感到惊讶。

我通常发现为各种jQuery库创建Knockout绑定包装器对我们的项目非常有效。它们通常相当简单。谢谢,您的解决方案确实解决了问题。我很想知道@Svend提到的包装技术。这将有助于我理解如何使用KO使用不同的JQuery插件。我会让你接受答案的。