2014-07-01 68 views
1

這個fiddle顯示了一個映射到一個函數的用戶列表,在該函數中,一個observableArray被創建在該角色的周圍。出於某種原因,這些映射用戶的控制檯日誌僅顯示角色as和數組。Knockout not create and 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

您正在使用$。每次當你應該使用$ .MAP

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

也有看一下映射插件。不要重複發明輪子

+0

我一直都在使用它,永遠不會有這個問題。 –

+0

與$ .each一起使用的回調函數的返回值僅用於中斷或繼續迭代器。 $ .map是你想要的http://jsfiddle.net/5dXC3/1。此外,$ .each返回發送到$ .each的原始對象/數組以獲得流暢的語法approuch – Anders