Knockout没有创建和observableArray

时间:2014-07-01 17:37:26

标签: javascript knockout.js

这个fiddle显示了一个映射到函数的用户列表,在该函数中,围绕角色创建了一个observableArray。由于某种原因,这些映射用户的控制台日志仅显示角色和数组。

我不知道为什么?!

var userModel = function (data) {
    var self = this;

    self.FirstName = data.FirstName;
    self.LastName = data.LastName;
    self.Email = data.Email;
    self.ContactTel = data.ContactTel;
    self.ContactMob = data.ContactMob;
    self.Username = data.Username;
    self.Roles = ko.observableArray(data.Roles);
};

映射:

self.users = ko.observableArray([]).map(model, userModel);

我的observableArray扩展名:

ko.observableArray.fn.map = function (data, Constructor) {
    var mapped = $.each(data, function (i, e) { return new Constructor(e); });

    this(mapped);

    return this;
};

1 个答案:

答案 0 :(得分:1)

当你应该使用$ .map

时,你正在使用$ .each
ko.observableArray.fn.map = function (data, Constructor) {
    var mapped = $.map(data, function (i, e) { return new Constructor(e); });   
    this(mapped);   
    return this;
};

另请参阅映射插件。不要重新发明轮子