Javascript 敲除JS任意对象绑定
我对击倒js非常陌生,我正在尝试我的手在例子上,所以我有这个Javascript 敲除JS任意对象绑定,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我对击倒js非常陌生,我正在尝试我的手在例子上,所以我有这个 <script> var Country = function(name, population) { this.countryName = name; this.countryPopulation = population; }; var viewModel = { availableCountries : ko.observableArray([ new Country("U
<script>
var Country = function(name, population) {
this.countryName = name;
this.countryPopulation = population;
};
var viewModel = {
availableCountries : ko.observableArray([
new Country("UK", 65000000),
new Country("USA", 320000000),
new Country("Sweden", 29000000)
]),
selectedCountry : ko.observable() // Nothing selected by default
};
$(function(){ko.applyBindings(viewModel)});
</script>
但它不起作用,“选择…”仍然显示为预选选项文本,而不是“Uk”,然后我尝试了
selectedCountry : ko.observable(availableCountries[0])
但我总是犯这个错误
“未捕获的TypeError:无法读取未定义的属性“0”
我做错了什么?如何纠正它?我认为解决方法是将您选择的值设置为“UK”。因为值绑定只读取值,而不是整个对象 因此,当您将对象设置为索引0时,该项不会被识别为值
HTH定义viewModel对象后,添加以下内容:
viewModel.selectedCountry(viewModel.availableCountries()[0]);
您不能在声明对象时引用对象上的值(至少我不认为您可以),因此您需要在声明后进行赋值
另一个选项是将viewModel定义为函数:
var viewModel = function (){
var self = this;
self.availableCountries = ko.observableArray([
new Country("UK", 65000000),
new Country("USA", 320000000),
new Country("Sweden", 29000000)
]);
self.selectedCountry = ko.observable(self.availableCountries()[0])
};
viewModel.selectedCountry(viewModel.availableCountries()[0]);
var viewModel = function (){
var self = this;
self.availableCountries = ko.observableArray([
new Country("UK", 65000000),
new Country("USA", 320000000),
new Country("Sweden", 29000000)
]);
self.selectedCountry = ko.observable(self.availableCountries()[0])
};