我最近开始学习knockoutjs(我认为它很精彩。)但是如果搞乱它并学习如何添加到阵列我已经卡住了,需要一些帮助。 Fiddle can be found here
这是我的HTML代码:
<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>
这是我的knockoutjs代码:
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);
出于某种原因,我不能让新动物进入当前的动物群 - 我不是100%我做错了,因为它把价值放在了,而不是文本。
任何帮助都会很棒:)
答案 0 :(得分:1)
selectedAnimal
的定义,但由于您在text
绑定中使用它,您的代码正在破坏animal
有一个结构{ name: 'elephant' }
,但你推动self.animalArray.push(self.animalToAdd())
,所以即使你推,你也不会看到任何选择。value: animalToAdd, valueUpdate: 'afterkeydown'
添加了名为textInput
的新绑定。这是在 KO 3.2 中引入的,因此如果您使用的是上述版本,请使用它。