【问题标题】:knockout mapping of properties not working属性的剔除映射不起作用
【发布时间】:2023-03-14 11:42:01
【问题描述】:

映射似乎无法正常工作:

 @{ var jsonData = new HtmlString(new JavaScriptSerializer().Serialize(Model)); }

    var initialData = @jsonData;

--->在那个阶段,initialData包含正确的json格式数据

    var viewModel;
    ko.mapping.fromJS(initialData, viewModel);

---> 这里,viewModel 包含了所有的属性。在 Chrome 调试器中,如果我键入 viewModel.Products(它是一个数组属性),就会找到它并且似乎已正确映射。

但是,如果我执行 viewModel.Products[0],则返回“未定义”,这很奇怪,因为该数组实际上包含 4 个项目(我可以在 json 数据中看到它)。

我错过了什么吗?

【问题讨论】:

    标签: jquery asp.net-mvc-4 knockout.js


    【解决方案1】:

    映射后它应该是一个可观察的属性,因此您可以像访问它一样访问它(它是一个函数):

    viewModel.Products()[0];
    

    【讨论】:

    • 是的,这行得通。以这种方式使用数组对我来说感觉很奇怪,我会习惯的。另一个问题,如何使用语法 data-bind="foreach: Products" 访问项目的值。那是循环遍历数组的项目,但我如何访问实际的项目?
    • 该项目仅在循环内可供您使用,因此您只需将数据绑定到项目的任何属性直接 data-bind="text: nameOfItemProperty"。
    • 这就是问题所在,我没有房产。该数组是一个没有属性名的字符串数组
    • $data 就是你想要的。
    猜你喜欢
    • 1970-01-01
    • 2017-02-14
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    相关资源
    最近更新 更多