【问题标题】:Learning knockoutjs - value not adding to array学习knockoutjs - 值不添加到数组
【发布时间】:2017-06-09 04:58:06
【问题描述】:

我最近开始学习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% 我做错了什么,因为它输入了值,而不是文本。

任何帮助都会很棒:)

【问题讨论】:

    标签: javascript arrays knockout.js


    【解决方案1】:
    • 第一个错误,您缺少 selectedAnimal 的定义,但由于您在 text 绑定中使用它,因此您的代码已损坏
    • 第二个错误,animal 有一个结构 { name: 'elephant' },但你像 self.animalArray.push(self.animalToAdd()) 一样推送,所以即使你推送,你也不会在选择中看到任何内容。

    Updated JSFiddle

    指针

    • Knockout 为 value: animalToAdd, valueUpdate: 'afterkeydown' 添加了新的绑定,称为 textInput。这是在 KO 3.2 中引入的,因此如果您使用的是高于该版本的版本,请使用它。

    【讨论】:

    • 感谢您提供的信息 :) 帮了我很多忙。
    猜你喜欢
    • 2016-06-29
    • 2012-03-13
    • 2023-03-23
    • 1970-01-01
    • 2023-01-13
    • 2021-06-03
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    相关资源
    最近更新 更多