0

リスト内のモデル内の日付フィールドにデータバインドする場合があります。

function Model(data) {
    var self = this;
    ko.mapping.fromJS(data, {}, this);
}

<div id="fieldOnPage" data-bind="text: formatDate(myDateField())"></div>

次に、モーダルで同じ日付フィールドを表示して、編集できるようにします。

<div id="fieldInModal" data-bind="text: formatDate(myDateField())"></div>

ただし、 formatDate 関数を呼び出しているため、ラップされていないオブザーバブルで機能するため、モーダルで値を編集すると、変更がリアルタイムでメイン ページに書き込まれるのを確認できません。

もう 1 つの注意点は、ko.mapping プラグインを使用しているため、必ずしも myDateField に特定の ko.computed フィールドがあるとは限りません。これは、このような外部関数で行うことは可能ですか? そうでない場合、myDateField バインディングを具体的にオーバーライドする必要がある場合、ko.computed を使用してどのように行うのでしょうか?

4

1 に答える 1

1

次のようなことができます

function Model(data) {
    var self = this;
    ko.mapping.fromJS(data, {}, this);

    this.formattedDate = ko.computed(function () {
       return formatDate(ko.utils.unwrapObservable(self.myDateField));
    });
}

フォーマットされた日付へのバインド

<div id="fieldInModal" data-bind="text: formattedDate"></div>

お役に立てれば。

于 2012-05-19T17:08:41.147 に答える