2013-01-07 57 views
3

我有下面的代码片段淘汰赛解开复杂的对象

function Person() { 
    var id; 
    var name; 
    var loginName; 
    var email; 
} 

function Substitude() { 
    this.substitude = ko.observable(new Person()); 
    this.subBegin = ko.observable(Date()); 
    this.subEnd = ko.observable(Date()); 
} 

function SampleSubstitude() { 
    var testing = ko.observable(new Substitude()); 
    var tester = getPerson(88,"Alpha Tester","a.tester","[email protected]"); 

    testing.substitude = tester; 

    return ko.utils.unwrapObservable(testing); 
} 

function getPerson(id, name, login, email) { 
    var person = ko.observable(new Person()); 
    person.id = id; 
    person.name = name; 
    person.loginName = login; 
    person.email = email; 

    return ko.utils.unwrapObservable(person); 

} 

这是我的看法型号:

function AbsenceRequestModel() { 
    this.delegations = ko.observableArray(); 
    this.addsubstitudeclick = function() { 
     var raw = SampleSubstitude(); 
     var obj = ko.utils.unwrapObservable(new raw()); 
     this.delegations.push(obj); 
    } 
}; 

不幸的是所有的值推到我的数组是空的。任何人都可以给我一个提示,这里有什么不对?

+0

它是替代品,而不是替代品。这更像是一种语法的东西,但我不得不说出来。 – arkanciscan

+0

@arkanciscan:这是更多*拼写*的东西。与语法无关。 ;-) –

回答

0

问题解决了:

function Person(id, name, login, email) { 
    this.id = ko.observable(id); 
    this.name = ko.observable(name); 
    this.loginName = ko.observable(login); 
    this.email = ko.observable(email); 
} 

变量之前私人设置,没我没有注意到它。 感谢您的帮助。

1

你应该值设置为观察到运的人

person().id = id; 
person().name = name; 
person().loginName = login; 
person().email = email; 
6

如果所有的值被观察到的,那么你就不需要你的Person构造函数和你的对象之间的代理方法:

function Person(id, name, login, email) { 
    var id = ko.observable(id); 
    var name = ko.observable(name); 
    var loginName = ko.observable(login); 
    var email = ko.observable(email); 
} 

var person = new Person(1, "Name", "LoginName", '[email protected]'); 
>> ko.toJS(person) 
{ 
    id : 1, 
    name : "Name", 
    loginName : "LoginName", 
    email : "[email protected]" 
}