5

私は単純なknockoutjs ViewModelを持っています。しかし、そのモデルからビューにバインディングを適用する前に、まずそれを初期化するか、AJAX 経由でサーバーから取得するデータ (JSON 形式) で配列値を設定する必要があります。

モデルのオブジェクトを作成し、ajax リクエストを作成してから、モデル配列を初期化できることを知っています。このような:

function AppViewModel() {
    var self = this;
    self.Servers = ko.observableArray([]);//this one 'll be filled by data from server
}
var MyViewModel = new AppViewModel();
MyViewModel.Servers = ko.mapping.fromJSON(json_data);//make ajax call to get json_data.
ko.applyBindings(MyViewModel);

それは良い習慣ですか、それともより良い習慣がありますか。

4

2 に答える 2

0

Knockout Mapping プラグインは廃止されつつあるようです。元の作成者はメンテナーを探している/探していましたが、その時点でコンセンサスは、ユーザーを新しいKnockout ViewModel プラグインに移行させることであると思われました。

それがベスト プラクティスかどうかはわかりませんが、JSON から ViewModel へのステップをどのように行っているかについて説明します。私の VM はかなり複雑なので、それらを別の js ファイルに保存し、データをコンストラクターに渡します。これにより、ページ内スクリプトは次のようになります。

var MyViewModel = new AppViewModel(json_data);
ko.applyBindings(MyViewModel);

単一行を使用すると、単体テストで少し便利になります (忘れることが 1 つ少なくなります)。

于 2013-07-07T21:53:38.480 に答える