我有一个从各种Mvc操作填充的Knockout视图模型。
从第一个下拉菜单中选择一个类别(比如水果,肉类,饮料等)。
第一个选项会自动填充第二个下拉列表。然而,水果可能有2场比赛(比如苹果,橘子),肉类可以有2场(比如牛肉,羊肉)和许多饮料(几百种)。
我的页面当前显示的搜索框取决于所选的类别。
我想知道如何自动绑定Fruit&的第二个下拉列表。肉,或等待并从搜索查询的结果中进行绑定。
对不起,这是模糊的 - 抽搐的客户!对KnockoutJs来说很新。
提前致谢。
答案 0 :(得分:1)
如果我理解正确,您可以在viewmodel中创建一个绑定到下拉列表更改事件的方法。
示例方法:
var myViewModel = {
firstDropDownArray: ko.observableArray([]),
secondDropDownArray: ko.observableArray([]),
// Validates Selection
validateSelection: function (item) {
var anotherList;
switch (item.toUpperCase()) {
case "FRUIT":
// Do something...
break;
case "DRINKS":
// Do something else...
break;
default:
}
}
};
您的Dropdown可以绑定到这样的方法:
<select id="FirstDropDown" data-bind="options: myViewModel.firstDropDownArray, <any other binding options>, event: {change: myViewModel.validateSelection(currentItem)}">
</select>
如上所述:event-binding,
在调用处理程序时,Knockout将提供当前模型 value作为第一个参数。
我假设这意味着当您调用方法时currentItem
将成为所选项。
我知道在我的示例代码中我编写了item.toUpperCase()
,但这只是假设项目是作为字符串传递的。这个语法显然必须根据您声明和填充下拉列表的方式进行更改,但实际上您仍然应该能够在viewmodel中编写一个方法,然后绑定到change事件,..或任何其他您喜欢的事件。< / p>