来自JSON的Knockout JS Mapping无法正常工作

时间:2012-12-18 17:14:51

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

我正在接收JSON字符串并尝试将其映射到KOJS VM,但我不明白为什么以下代码无效。

这是我的JS档案:

var viewModel = {};

$.ajax({
  url: '../data/settings',
  cache: false,
  success: function(data) {
    alert(data);
    viewModel = ko.mapping.fromJS(data);
    ko.applyBindings(viewModel);
  }
});

显示第一个警告:

{"remember":"false"}

我的HTML,不起作用是:

<span data-bind="value:remember"></span>

你知道这里可能出了什么问题吗?谢谢!

2 个答案:

答案 0 :(得分:2)

看起来您的数据可能不是JSON字符串,因此您想要使用fromJS:

viewModel = ko.mapping.fromJS(data);

此问题有助于调试绑定:How to debug template binding errors for KnockoutJS?

答案 1 :(得分:2)

我认为问题可能是您的绑定代码:

<span data-bind="value:remember"></span>

应该是:

<span data-bind="text:remember"></span>

看到这个小提琴:http://jsfiddle.net/kboucher/Jj9DZ/

'value'适用于具有value属性的表单字段(并且可以抽象为包含select个框)