【问题标题】:Can't get my data-binding with knockoutJS to work无法使用 knockoutJS 进行数据绑定
【发布时间】:2013-05-01 11:23:38
【问题描述】:

我目前正在使用 DurandalJS、BreezeJS 和 KnockoutJS 开发一个应用程序。

一切都很好,但最简单的事情(我相信),我无法让它工作。

在我的 Viewmodel 中,我有一个 currentCustomer,它是一个 ko.observable。 通过微风,我得到了客户! currentCustomer(data.results[0].Customer()); 这一切正常。如果我使用 Google Chrome 进行检查,我会看到该对象充满了 currentCustomer。

我想要的是以下内容:我有一个输入字段和一个值 data-bind 我正在尝试将 currentCustomer 的名称绑定到此输入。但我无法让它工作。什么是这样的:

 <input data-bind="value: currentCustomer()" />

但是在输入字段中它只显示 [Object object] 所以在 currentCustomer 中肯定有一些东西(这是)。

这是我尝试过但没有奏效的方法:

<input data-bind="value: currentCustomer().Name()" />
<input data-bind="value: currentCustomer().Name" />
<input data-bind="value: currentCustomer.Name()" />
<input data-bind="value: currentCustomer.Name" />
<input data-bind="value: currentCustomer()._latestValue().Name()" />
<input data-bind="value: currentCustomer()._latestValue.Name()" />

这是一个屏幕截图,您可以看到视图中的值!

http://s22.postimg.org/62m21nnsx/problem_data_bind.png

【问题讨论】:

  • &lt;input data-bind="value: currentCustomer().Name" /&gt; 应该可以工作,请仔细检查。您也可以尝试使用&lt;input data-bind="value: ko.toJSON(currentCustomer)" /&gt; 并使用输出更新帖子。
  • 不,那没用!我现在就试试 ko.toJSON!不,ko.json 返回 NULL :S
  • 您可能有一个复数帐户吗?对于这类信息,您真的应该看看 John Papa 的网站:johnpapa.net。他在这里也很活跃,所以我认为他会回答这种问题。
  • @NickN。我没有复数帐户。我希望他这样做,我从他的热毛巾模板中学到了很多;)。
  • 也请尝试&lt;input data-bind="value: currentCustomer() &amp;&amp; currentCustomer().Name" /&gt;

标签: javascript knockout.js breeze


【解决方案1】:

你试过用'with'吗?

<div data-bind='with:currentCustomer'>
<input data-bind="value: Name/Name()" />
</div>

【讨论】:

  • &lt;div data-bind='with: currentCustomer'&gt; &lt;input data-bind="value: Name" /&gt; &lt;/div&gt; 这成功了 ;) 谢谢 :) 但是你能否解释一下为什么其他答案没有?
  • 因为你使用了 data-bind="value: text: currentCustomer().name" 而不是 data-bind="value: currentCustomer().name"
  • 在下面阅读您对我的回答的第一个回复。
  • 这很奇怪!这就是我在 Google 调试中拥有 &lt;input data-bind="value: currentCustomer().Name"/&gt; 时得到的结果:Unable to parse bindings. Message: TypeError: Unable to get property 'Name' of undefined or null reference; Bindings value: value: currentCustomer().Name,views/estimatepage,[object Object] 这是 Knockout 中可能存在的错误吗?
  • 抱歉回复晚了,午餐和会议...我不能确切地说为什么这是修复程序,但我不得不使用它来解决您遇到的问题。
【解决方案2】:

将其更改为 currentCustomer().name 并且只要 Name 是 currentCustomer 实体上的属性,它应该可以工作。

【讨论】:

  • 不,那没用:S Unable to parse bindings. Message: TypeError: Unable to get property 'name' of undefined or null reference; Bindings value: text: currentCustomer().name,views/estimatepage,[object Object]
  • 未定义的属性意味着您的 currentCustomer() 为空。
  • 另外说明,如果当前客户有一个属性“名称”并且您使用 camelCase 作为默认约定,那么 currentCustomer().name 是使用它的正确方法,如果您收到上述错误你的 ko.observable() 是空的。您是否尝试在“填充”数据之前查看实体的属性?
  • 是的,我知道,但请看我发布的截图!此外,当我只调用 currentCustomer() 时,它会显示 [Object Object]
  • 在您的屏幕截图中,您正在查看您不需要访问的名为 latestValue 的属性。
猜你喜欢
  • 1970-01-01
  • 2012-04-29
  • 1970-01-01
  • 2015-02-26
  • 2019-09-13
  • 2013-12-22
  • 2016-01-13
  • 2012-04-14
  • 2015-05-14
相关资源
最近更新 更多