【问题标题】:knockout mapping plugin difficulty with observable array可观察数组的淘汰赛映射插件难度
【发布时间】:2017-08-11 20:05:48
【问题描述】:

刚刚开始使用映射插件进行淘汰赛。但是在阅读文档后,我无法弄清楚为什么我的 observableArray 说它是未定义的。

这是小提琴。 https://jsfiddle.net/zv39qn64/3/

当我运行小提琴时,我收到 ReferenceError: Books is not defined.

JS

$(document).ready(function() {
  getModelFromServer()
});


var data = {
  LibraryName: "My home library",
  Books: [
    { Id : 1, Title : "Oliver Twist" },
    {Id: 2,  Title: "Moby Dick"}
  ]
};


function getModelFromServer() {
  $.ajax({
    type: 'GET',
    cache: false,
    data: data,
    url: '/echo/jsonp/',
    success: function(response) {
    var libraryViewModel = ko.mapping.fromJS(response);
    ko.applyBindings(libraryViewModel);
    }
  });
}

HTML

The library <span data-bind="text: LibraryName"></span>
<ul data-bind="foreach: Books">
<li>
    <span data-bind="text: Id"></span> <span data-bind="text: Title"></span>
 </li>
</ul>

【问题讨论】:

  • 来自服务器的格式不正确,你能说明你是如何从服务器发送数据的吗?
  • 它正在使用 jsfiddle 的 echo 功能。你试过小提琴吗?

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


【解决方案1】:
function getModelFromServer() {
$.ajax({
    type: 'POST',
    cache: false,
    data: {
        json: JSON.stringify(data)},
    url: '/echo/json/',
    success: function(response) {
    var libraryViewModel = ko.mapping.fromJS(response);
    ko.applyBindings(libraryViewModel);
    }
  });
}

只更改了要发布的类型和数据输入

https://jsfiddle.net/zv39qn64/4/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-07
    • 2012-09-08
    • 1970-01-01
    • 2015-10-05
    • 2013-03-12
    • 2012-10-14
    • 1970-01-01
    相关资源
    最近更新 更多