javascript - Knockout - 无法处理绑定(bind) - 带有

标签 javascript jquery html knockout.js knockout-mapping-plugin

我对 KnockoutJS 还比较陌生,我遇到了绑定(bind)问题,看不出问题所在。我尝试过各种方法,但似乎没有任何效果。我确信可能有一个简单的解决方案,只是我看不到!

我通过ajax调用数据并尝试显示文本框中数据中的一项,然后可以更新该项目。我在控制台中收到以下错误:

Uncaught ReferenceError: Unable to process binding "with: function (){return KHAViewModel }" Message: Unable to process binding "with: function (){return fundedWTEResults }" Message: Unable to process binding "textInput: function (){return ActualFundedWTE }" Message: ActualFundedWTE is not defined

下面是我的代码的精简版本,我用一些 JS 复制了我的 ajax 脚本。我也在 jsFiddle 上复制了它:

HTML

<div class="container">
  <pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
</div>

<div class="container" id="dateSearch" >
  <h2></h2>
  <form class="form-inline" data-bind="with: KHAViewModel">
    <div class="form-group" data-bind="with: fundedWTEResults">
      <span>Funded WTE: </span>
      <input id="fundedWTE" data-bind="textInput: ActualFundedWTE">
    </div>
  </form>
</div>

JS

// KHA View Model
function KHAViewModel() {
  var self = this;
  self.fundedWTEResults = ko.observableArray([]);

  function fundedWTE (team) {
  //  $.ajax({
  //    url: "/...",
  //    type: "POST",
  //        ...........
  //  });

    var r = [{"Team":team,"ActualFundedWTE":12.00}];
    ko.mapping.fromJS(r, {}, self.fundedWTEResults);
  }

  fundedWTE('TeamA');

}

// Master View Model
function masterVM() {
  var self = this;
  self.KHAViewModel = new KHAViewModel();

};

// Activate Knockout
ko.applyBindings(new masterVM());

最佳答案

看来 @user3297291 已经非常迅速地解决了您的问题。

使用 ko.dataFor 和 ko.contextFor 是将来在调试此类问题时对您有所帮助的一个技巧。特别是如果您使用的是 Chrome,控制台上的 $0 指的是开发人员工具中当前选定的元素。

选择您要调查的元素,然后在开发控制台中输入:

ko.dataFor($0)
ko.dataFor(document.getElementById("fundedWTE")) //Equivalent to this

它将显示该元素所绑定(bind)的内容,这通常足以帮助您了解绑定(bind)上下文的实际情况。

ko.contextFor 为您提供更多信息,如果您正在使用 $root、$parent、$parents 等,这会很方便。

关于javascript - Knockout - 无法处理绑定(bind) - 带有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44153988/

相关文章:

javascript - 取消选择 radio 输入选择

jquery - 如何在 jQuery 中获取 ul 列表中父子关系的树结构?

javascript - 使用 TinyMCE 编辑器时如何自动保存

jquery - Chrome 中无法解释的行为,是我的代码还是他们的代码?

javascript - 更改选择元素?

javascript - ember.js 路由刷新后滚动到聊天框底部

javascript - Chart js x轴值重复两次

javascript - 使用脚本从 JS 文件中删除文本

jquery - 如何使用 jQuery 获取表列索引?

html - 使用 css 网格框架重复行/列代码