【问题标题】:Knockout Mapping plugin not working on array of objectsKnockout Mapping 插件不适用于对象数组
【发布时间】:2023-03-22 13:26:02
【问题描述】:

剔除映射不适用于对象数组。

这是我的小提琴 http://jsfiddle.net/varunfiddle/03rv2the/

基本上我已经尝试将一个对象数组映射到一个可观察数组中。

var ViewModel = function() {
    var self = this;
    var newData = 
                    [{"PersonId":1,"Name":"LoginUser1","OriginalSource":null,"Remarks":null},
                     {"PersonId":2,"Name":"LoginUser1","OriginalSource":null,"Remarks":null}];

    self.persons=ko.mapping.fromJS(newData, {}, self);

};

var myVM = new ViewModel();
ko.applyBindings(myVM);

然后在html中绑定

<table>
    <tbody data-bind="foreach:persons">
        <tr>
            <td>
                <label data-bind="text:Name"></label>
            </td>
        </tr>
    </tbody>

</table>

我没有看到对象数组上发生数据绑定。 有解决办法吗?谢谢。

【问题讨论】:

    标签: knockout.js knockout-mapping-plugin


    【解决方案1】:

    删除调用ko.mapping.fromJS() 的第三个参数(也删除第二个参数,您现在不需要它)。第三个参数是要添加映射属性的现有对象。您不想像那样将该数组添加到您的视图模型中,您只是想创建一个具有映射属性的新数组。

    self.persons = ko.mapping.fromJS(newData);
    

    如果您想使用映射插件添加到您的视图模型中,您需要创建一个与您希望创建的视图模型具有相同结构的对象,然后将其传递给函数(使用第三个参数) .

    var ViewModel = function() {
        var self = this;
        var model = {
            persons: [
                {"PersonId":1,"Name":"LoginUser1","OriginalSource":null,"Remarks":null},
                {"PersonId":2,"Name":"LoginUser1","OriginalSource":null,"Remarks":null}
            ]
        };
    
        ko.mapping.fromJS(model, {}, self);
    };
    

    【讨论】:

      猜你喜欢
      • 2012-12-03
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 2013-09-07
      • 2014-04-29
      • 2014-12-02
      • 2013-03-09
      • 1970-01-01
      相关资源
      最近更新 更多