1

一部のサブスクリプションko.mappingを持つモデルを更新するとエラーが発生します。サブスクリプションが削除されるとすぐに、すべてが魔法のように機能します. それを機能させる方法はありますか?

この例を考えてみましょう ( jsfiddle available ) -トリガーエラーko.mapping.fromJS()での呼び出し:initModel()

var iniData = {
    FirstName: "foo",
    LastName: "bar"
};

var PersonModel = function() {
    this.FirstName = ko.observable("");
    this.LastName = ko.observable("");
    this.FullName = ko.observable("");

    // If you comment out subscribe() calls, everything works fine!
    this.FirstName.subscribe(this.updateFullName);    
    this.LastName.subscribe(this.updateFullName);


    // Update FullName only if it's empty
    this.updateFullName = function(){
            if (!this.FullName()) {
                this.FullName(
                    this.LastName() + 
                            this.FirstName() ? (
                                " " + this.FirstName()
                            ):''
                );
            }

        };
    this.initModel = function(){
        try {
        ko.mapping.fromJS(iniData, {}, this);
        }
        catch(err) {
            alert(err.message);
        }
    }
}

ko.applyBindings(new PersonModel());
4

2 に答える 2

0

ここでは、計算されたオブザーバブルの方が理にかなっていませんか? それとも、fullName の値を単独で編集可能にする必要がありますか?

[編集] おっと、ジャレインの方が速かった ;)

于 2013-04-25T17:18:30.997 に答える