Javascript 学习knockoutjs-不向数组添加值
我最近开始学习knockoutjs(我认为它很棒。)然而,我在学习如何添加到阵列时遇到了麻烦,需要一些帮助 以下是我的html代码:Javascript 学习knockoutjs-不向数组添加值,javascript,arrays,knockout.js,Javascript,Arrays,Knockout.js,我最近开始学习knockoutjs(我认为它很棒。)然而,我在学习如何添加到阵列时遇到了麻烦,需要一些帮助 以下是我的html代码: <h3>We need more animals</h3> <form data-bind="submit: addAnimal"> <input type="text" data-bind="value: animalToAdd, valueUpdate: 'afterkeydown'"/>
<h3>We need more animals</h3>
<form data-bind="submit: addAnimal">
<input type="text" data-bind="value: animalToAdd, valueUpdate: 'afterkeydown'"/>
<button type="submit">Add animal</button>
</form>
<select data-bind="options: animalArray, optionsText: 'name'"></select>
<p data-bind="text: selectedAnimal"></p>
出于某种原因,我无法让新的动物进入当前的动物数组中——我不是100%认为我做错了什么,因为它将值放入,而不是文本
任何帮助都很好:)- 第一个错误是,您缺少
的定义,但由于您在selectedAnimal
绑定中使用它,因此代码正在中断text
- 第二个错误是,
有一个结构animal
,但是你推的是self.animalArray.push(self.animalToAdd()),所以即使你推,你也不会在select中看到任何东西{name:'elephant'}
- Knockout为
添加了新的绑定,称为value:animaltodd,valueUpdate:'afterkeydown'
。这是在KO3.2中引入的,所以如果您使用的是上述版本,请使用它textInput
function viewModel(){
var self = this;
self.animalArray = ko.observableArray([
{
name: 'elephant'
},
{
name: 'dog'
},
{
name: 'cat'
}
]);
self.animalToAdd = ko.observable();
self.addAnimal = function(){
if(self.animalToAdd() != ''){
self.animalArray.push(self.animalToAdd());
self.animalToAdd('');
}
alert(self.animalToAdd());
}
}
ko.applyBindings(viewModel);