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","a.tester@example.com");

    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);
    }
};

残念ながら、配列にプッシュされた値はすべて空です。ここで何が問題なのか、誰かヒントを教えてもらえますか?

4

3 に答える 3

8

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", 'aaaa@abc.cde');
>> ko.toJS(person) 
{
    id : 1,
    name : "Name",
    loginName : "LoginName",
    email : "aaaa@abc.cde"
} 
于 2013-01-07T11:27:57.020 に答える
1

人の観察可能な操作に値を設定する必要があります

person().id = id;
person().name = name;
person().loginName = login;
person().email = email;
于 2013-01-07T11:22:07.857 に答える
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);
}

変数は以前にプライベートに設定されていましたが、それに気づきませんでした。助けてくれてありがとう。

于 2013-01-07T14:33:24.780 に答える