Backbone.jsをロードする非同期データ

こんにちは 作業中にBackbone.jsで何を書かなければならなかったのか、また何に遭遇する可能性があるのか​​についての記事を執筆し続けます。 今日は、非同期データの読み込み、またはサイトで頻繁に必要なデータについて説明します。



サイトにさまざまな種類のデータ(画像、テキスト、音声)を追加できるが、これらの種類は拡張できるとします。 可能なタイプはデータベースに保存されます。 毎回基地から出るのは非常に高価です。 一度取得して使用する必要があります。



したがって、データをロードします。



app.models.dataTypes = new DataTypesCollection(); app.models.dataTypes.fetch();
      
      





ここでユーザーにapp.models.dataTypesをどこでも表示します 。 しかし、ユーザーがこのフィールドを必要とするページにすぐに移動した場合、パンクする可能性が1つありますか? これを行うには、データが受信されるイベントを作成します。



 app.models.dataTypes = new DataTypesCollection(); app.models.dataTypes.fetch({ success: function() { Backbone.history.trigger("dataTypesLoaded"); } });
      
      





次に、このイベントを「キャッチ」する必要があります。 このために、関数loadDataTypesを作成しました 。この関数は、データを配置する場所place )をパラメーターとして受け取ります。 このブロックを1ページの複数の場所に表示する必要があるためです。 (データの追加と編集は1ページで行われます)。



 function loadDataTypes(place) { place.empty(); //   var addDataTypes = function() { //    _.each(app.models.dataTypes.models, function(item) { item.set("value", item.get("data_type_code")); item.set("text", item.get("data_type_name")); var selectItem = new SelectItemView({ //   option el: place, model: item }); selectItem.render(); //  }); } if (app.models.dataTypes.models.length != 0) { //   addDataTypes(); } else { //   , "" . Backbone.history.on("dataTypesLoaded", addDataTypes); } }
      
      





したがって、たとえば最初のロードでデータをロードし、適切な場所でそれを発行します。 任意の番号に電話できます。



しかし、一般的に言えば、このようなフィールドを多数持つことができます。 すべてのフィールドに対して、同様の関数を記述し、すべてのデータはロード時に非同期にロードされます。 ユーザーは、すべてがロードされる速度に気付くことさえありません。



利点から、サーバーからデータを一度だけ取得し、必要なだけ使用することができました。 したがって、ユーザーを傷つけることなく。



PS SelectItemViewの説明が必要な場合は、書き込み、追加できますが、すべては簡単です。



All Articles