1

ノックアウト マッピング プラグインの使用について質問があります。

サーバーから単純な配列を取得し、マッピング プラグインを使用して JavaScript オブジェクトに変換しています。アイテムのプロパティを監視できるようにしたいので、作成コールバックのカスタム マッピングを pugin に提供しています。

    var meeting = function (id, titel, description) {
        var self = this;
        self.Id = id;
        self.Titel = ko.observable(titel);
        self.Description = ko.observable(description);
        self.Test = ko.computed(function () { return self.Description(); });
        return self;
    }

    var mapping = {
        create: function (json) {
            return new meeting(json.data.Id, json.data.Titel, json.data.Description);
        }
    }

ko.mapping.fromJS(myFetchedData) を呼び出すと、(デバッガーが接続された状態で) 配列内のすべての項目に対して呼び出される create-function が表示されます。すべてが HTML コントロールに正しくバインドされています。配列内のすべてのアイテムに li アイテムが表示されます。

<ul id="meetings" data-bind=" foreach: meetings">
    <li class="ui-widget-content ui-corner-all">
        <h1 data-bind="text: Titel" class="ui-widget-header"></h1>
        <div>
            <input type="text" data-bind="text: $data.Description || 'Omschrijving?'"></input>,
        </div>
        <div>
            <input type="text" data-bind="text: $data.Test || 'Omschrijving?'"></input>,
        </div>
        <a href="#" data-bind="click: $root.updateMeeting" >Update</a>
        <a href="#" data-bind="click: $root.removeMeeting" >Remove</a></p>
    </li>
</ul>

ただし、Description プロパティは Observable ではないようです。値を変更しても、テストで計算されたプロパティの値は更新されません。

ここで何か不足していますか?

どんな助けでも大歓迎です。

完全なサンプル コードは、http: //jsfiddle.net/dtiemstra/wRg88/にあります。

4

1 に答える 1

2

<input>プロパティではなく、コントロールのvalueプロパティにバインドする必要がありtextます。

したがって、代わりに:

<input type="text" data-bind="text: $data.Description || 'Omschrijving?'"></input>

あなたは書くべきです:

<input type="text" data-bind="value: $data.Description || 'Omschrijving?'"></input>

http://jsfiddle.net/wRg88/8/を参照してください

于 2012-08-10T12:19:44.823 に答える