Knockout.js ko.dataFor()是否与'select'元素一起工作?
我试图在Knockout.js ko.dataFor()是否与'select'元素一起工作?,knockout.js,Knockout.js,我试图在select元素上使用ko.dataFor(),但它返回了整个ViewModel。我希望得到所选选项的对象,但我总是得到ViewModel。我尝试过传递选择和选项,但无论哪种方式,我都得到了相同的结果 ko.DataFor(选择) ko.DataFor(选项) 函数MyViewModel(){ var self=这个; self.companys=ko.observearray([{id:1,名称:“雪佛兰”},{id:2,名称:“福特”},{id:2,名称:“道奇”}]);
select
元素上使用ko.dataFor()
,但它返回了整个ViewModel。我希望得到所选选项的对象,但我总是得到ViewModel。我尝试过传递选择
和选项
,但无论哪种方式,我都得到了相同的结果
ko.DataFor(选择)
ko.DataFor(选项)
函数MyViewModel(){
var self=这个;
self.companys=ko.observearray([{id:1,名称:“雪佛兰”},{id:2,名称:“福特”},{id:2,名称:“道奇”}]);
self.countries=ko.observearray([{id:1,名称:“USA”},{id:2,名称:“Canada”},{id:2,名称:“Mexico”}]);
}
var vm=新的MyViewModel();
ko.应用绑定(vm);
$(“#公司”).change(function(){
$(“#a”).val(“dataFor(“+this.id+”):“+ko.toJSON(ko.dataFor(this)));
var selectedOption=$(this.find(“:selected”)[0];
$(“#b”).val(“dataFor(“+this.id+”)”:+ko.toJSON(ko.dataFor(selectedOption));
});
函数ko.dataFor()
提供的是元素绑定到的对象。如果访问$data
上下文变量,绑定将看到相同的对象。options
绑定生成的选项元素使用相同的上下文,因此您不会看到任何差异。它只与绑定上下文发生更改的绑定相关(例如,在foreach绑定中)
如果您使用knockout的特性来访问您想要的对象,而不是依赖jquery,那就更好了。创建一个可观察对象并将该值绑定到select。然后,可以使用选定的值执行所需操作
function MyViewModel() {
var self = this;
self.selectedCompany = ko.observable();
self.companies = ko.observableArray(...);
self.countries = ko.observableArray(...);
}
已选择
函数ko.dataFor()
提供的是元素绑定到的对象。如果访问$data
上下文变量,绑定将看到相同的对象。options
绑定生成的选项元素使用相同的上下文,因此您不会看到任何差异。它只与绑定上下文发生更改的绑定相关(例如,在foreach绑定中)
如果您使用knockout的特性来访问您想要的对象,而不是依赖jquery,那就更好了。创建一个可观察对象并将该值绑定到select。然后,可以使用选定的值执行所需操作
function MyViewModel() {
var self = this;
self.selectedCompany = ko.observable();
self.companies = ko.observableArray(...);
self.countries = ko.observableArray(...);
}
已选择
<select id="companies"
data-bind="value: selectedCompany,
options: companies,
optionsText: 'name',
optionsCaption: ' '">
</select>
<br/>
Selected<br/>
<textarea cols="40" rows="10" data-bind="text: ko.toJSON(selectedCompany)">
</textarea>