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