2013-07-07 8 views
5

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

私は自分のモデルのオブジェクトを作成し、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); 

これは良い習慣であるか、それとも良いことですか?

答えて

1

あなたが提供している文脈で、少なくとも私にそれをやってもらえるようなものです。 mapping plugin's documentationには、AJAXリクエストに関するセクションがあり、サーバーオブジェクトのキーを追跡するのに役立つ「高度な」セクションもあり、サーバーへの更新のポストバックが容易になります。

もう1つの良い情報源はloading & saving tutorialです。これはマッピングプラグインを使用しないため、AJAXリクエストによるCRUD操作の処理に関するより基本的なことを示しています。

0

ノックアウトマッピングプラグインが途中にあるようです。元の著者は/ looking for maintainersでした。その時点で、ユーザーに新しいKnockout ViewModel pluginへの移行を許可していたようでした。

私はそれがベストプラクティスかどうかわかりませんが、私はJSON-ViewModelの手順をどのようにしているかを教えてください。私のVMはかなり複雑なので、私はそれらを別のjsファイルに保存し、そのデータをコンストラクタに渡します。一行は、ユニットテスト(忘れるために1つの以下のもの)で、それは少しより便利に持っ

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

:それは私のページ内のスクリプトは次のようになります。

+0

申し訳ありませんが、私はあなたの意見を得ていませんでした。もっと説明したり、完全な例を教えてくれますか? –

関連する問題