当您想要创建需要动态更改客户端的复杂 UI 时,Knockout 可以真正发挥作用。这是一个简单的示例,说明如何在 Knockout 中执行您所要求的操作。
html:
<form>
<select name="inputSelect" data-bind="options: dataSet, optionsText: 'Name', value: selectedItem, optionsCaption: '-- Select --'"></select>
<input type="text" name="firstName" data-bind="value: firstName, visible: selectedItem() && selectedItem().Name == 'First Name'" />
<input type="text" name="lastName" data-bind="value: lastName, visible: selectedItem() && selectedItem().Name == 'Last Name'" />
<input type="text" name="age" data-bind="value: age, visible: selectedItem() && selectedItem().Name == 'Age'" />
</form>
JS型号:
function Model() {
var self = this;
self.firstName = ko.observable('Matthew');
self.lastName = ko.observable('Cox');
self.age = ko.observable(26);
self.selectedItem = ko.observable();
self.dataSet = ko.observableArray([{ Id: 0, Name:'First Name'}, { Id: 1, Name:'Last Name'}, { Id: 2, Name:'Age'}]);
}
var vm = new Model();
ko.applyBindings(vm);
JSFiddle:http:
//jsfiddle.net/JmpGD/1/
解释:
我visible
在每个输入上设置了一个绑定,检查 的 Name 属性selectedItem()
以确定应该显示哪个项目。
在 jsfiddle 中,我使用稍微不同的方法来处理selectedItem()
null ,这会导致visible
绑定在尝试评估时爆炸selectedItem().Name == 'something'
。
您可以在此处阅读有关其工作原理的信息
http://knockoutjs.com/documentation/with-binding.html