1

Web アプリケーション以外のいくつかの場所で使用される大規模なデータ API を作成しました。ノックアウトをアプリケーションに統合したいと考えています。ノックアウトを使用すると、オブザーバブルを使用してモデルを作成できるようです。私が把握できないのは、API で既存の値を観察する方法です。これは可能ですか、それともデータを前後にプッシュするために中間モデルが必要ですか? それは非常に不便で非効率的です。明らかな何かが欠けていますか?

以下のコードでは、name 属性を観察したいと思います。ここで最善のアプローチに関する提案が欲しいですか?

編集:ノックアウトの周りに API を記述したり、API の上に追加のラッパーを記述したりするのではなく、既存の属性にオブザーバーをアタッチすることをお勧めします。この API は一部の非ブラウザー アプリケーションと共有されており、複雑さを追加することなくノックアウトを使用して API 全体を作成する可能性を排除していると思います。私は、必要なことを実行できる他のフレームワークを検討することにオープンです。

myAPI.user = {
    ...
    get name() {
        return myAPI.user.object.name;
    },
    set name(x) {
       myAPI.user.setProperty('name', x);
    }
    ...
};
4

1 に答える 1

1

カスタムを書くことができますcomputed

var VM = function() {
   this.apiUserName = ko.computed({
       read: function() { return myAPI.user.object.name; },
       write: function(value) { return myAPI.user.setProperty('name', value); },
       owner: this
   });
}

変更があり、それに対するイベントがある場合myAPI.user.object.nameは、 を呼び出しますvalueHasMutated

// inside your event
vm.apiUserName.valueHasMutated();
于 2013-02-22T19:07:54.400 に答える