【问题标题】:Knockout mapping not working for JSON object [closed]敲除映射不适用于 JSON 对象 [关闭]
【发布时间】:2013-10-08 12:57:32
【问题描述】:
function Employee() {
 return @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model)) 
};

function EmployeeList(Employee) {
 var map = ko.mapping.fromJS(Employee); return map; 
}

$(document).ready(function () {
 var obj = { emp: ko.observable(new EmployeeList(new Employee)) }; 
ko.applyBindings(obj); 
});

【问题讨论】:

  • 这在什么方面“不起作用”?你真的需要在这里提供更多的上下文......
  • 所以当我尝试在我的代码中使用 emp 时,我没有看到任何员工姓名出现,而我看到了可用的 json 数据。
  • 名称
  • 您的 HTML 助手正在渲染什么 JSON?你确定它有效吗?
  • 是的,它的 {"Name":"test", "Address":"test"}
  • 感谢您的解决方案有效。所以我试图以更好的方式优化,但后来我遇到了另一组错误。你介意帮助我吗-这就是我要搞砸的-
  • 标签: asp.net-mvc knockout-mapping-plugin


    【解决方案1】:

    您应该使用 ko 映射插件已经为您创建的observableArray,并映射到实际的对象数组中,请参阅this fiddle

    function Employee() {
        return  [{Name:"test", Address:"test"}] ;
    };
    
    function EmployeeList(Employee) {
     var map = ko.mapping.fromJS(Employee); 
        return map(); 
    }
    
    $(document).ready(function () {
     var obj = { emp: EmployeeList(Employee) }; 
    ko.applyBindings(obj);
    });
    

    注意我如何将您的 EmployeeList 函数更改为返回 map() 而不是 map - map 是一个函数,您希望返回由该函数包装的 实际值 - 这允许您更清晰地指定 obj - 无需将地图包装在另一个 observableArray...

    希望对您有所帮助...

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签