Backbone.js のコレクションは、単なる単純な順序セット モデルです。モデルとコレクションを適応させることで、ビュー層にデータ処理ロジックを配置することを避けることができます。さらに、モデルとコレクションは、データ変更時に Backbone.js ビューを自動的にマークするバックエンドと連携する便利な方法を提供します。このように、次のような状況で使用できます:
モデル: 動物、コレクション: 動物園
通常、コレクションは 1 つのモデルにのみ適合しますが、モデル自体はコレクションのタイプに限定されません。
モデル: 人物、コレクション: オフィス
モデル: 人物、コレクション: ホーム
一般的なモデル/コレクションの例を次に示します:
var Music = Backbone.Model.extend({
初期化: function(){
console.log("音楽の世界へようこそ");
}
});
var Album = Backbone.Collection.extend({
モデル: 音楽
});
上記のコードは、コレクションを作成する方法を示しています。しかし、データを使用してコレクションを操作するプロセスについては説明しません。それでは、プロセスを見てみましょう:
var Music = Backbone.Model.extend({
デフォルト: {
名前: "指定されていません"、
アーティスト: 「指定されていません」
}、
初期化: function(){
console.log("音楽の世界へようこそ "); });
var Album = Backbone.Collection.extend({
モデル: 音楽
});
var music1 = 新しい音楽 ({ id: 1 ,name: "How Bizarre", アーティスト: "OMC" });
var music 2 = 新しい音楽 ({id: 2, 名前: "What Hurts the Most"、アーティスト: "Rascal Flatts" });
var myAlbum = 新しいアルバム([音楽 1, 音楽 2]);
console.log( myAlbum.models );
Backbone.js コレクションと他のコンポーネントの関係を見てみましょう:
ご存知のとおり、コレクションとはモデルのコレクションです。したがって、コレクションにモデルを追加できます。モデルをコレクションに追加するには、add メソッドを使用します。 unshift メソッドを使用して、コレクションの先頭にモデルを追加することもできます。
console.log('新しい曲が追加されました');
console.log(JSON.stringify(音楽));
多くの場合、指定されたデータをコレクションから削除する必要があります。コレクションからモデルを削除するには、モデルの ID を指定する必要があります。元のコレクションを完全な新しいデータセットに置き換えたい場合は、リセットメソッドを使用できます。
console.log(JSON.stringify(音楽));
3. 取得と設定
コード内の他の場所でコレクションから値を取得する必要がある場合は、get メソッドを直接使用できます。この時点で、ID 値を取得でモデルに渡します。
console.log(JSON.stringify(Music.get(2)));
コレクションの set メソッドには興味深い実装があります。 set メソッドは、モデルのリストを渡すことによって、コレクションの「インテリジェントな」更新を実行します。リスト内のモデルがまだコレクションにない場合は、コレクションに追加されます。モデルがすでにコレクション内にある場合、そのプロパティはマージされます。リストに含まれていないモデルがコレクションに含まれている場合、そのモデルは削除されます。
var Music = Backbone.Model.extend({
// この属性はデフォルトとして設定する必要があります
デフォルト: {
名前: ''
}、
// コレクションが // id 属性を設定します。 idAttribute: 'id'
});
var Song = Backbone.Collection.extend({
モデル: 音楽
});
var モデル = [{
名前: 'OMC'、
id: 1
}、{
名前: 'フラッツ'、
id: 2
}];
var collection = 新しい曲(モデル);
Collection.bind('add', 関数 (モデル) {
アラート('addb')
});
Collection.bind('remove', function () {
アラート('追加')
});
モデル = [{
名前: 'OMC'、
id:1
}、{
名前: 'フラッツ'、
id: 2
}、{
名前: ' ジャクソン '、
id: 3
}];
Collection.add(モデル);
});
4. コンストラクターと初期化
コレクションを作成するときに、モデルの初期化配列を渡すことができます。オプションとしてコレクションコンパレータを追加できます。渡されたコンパレータ オプションが false の場合、並べ替えは禁止されます。初期化関数を定義すると、コレクションの作成時にこの関数が呼び出されます。いくつかのオプションを以下に説明します。モデルとコンパレーターは、指定されている場合、コレクションに直接追加されます。
var space = new Backbone.Collection([], {
モデル: 宇宙
});
5.toJSON
toJSO メソッドは、コレクション内の各モデルのハッシュ プロパティを含む配列を返します。このメソッドは通常、コレクション全体をシリアル化して永続化するために使用されます。
{名前: "フラッツ"}、
{名前: "OMC"}、
{名前: "ジャクソン"}
]);
alert(JSON.stringify(song));
6. コンパレータ
デフォルトでは、コレクションにはコンパレータがありません。コンパレーターを定義すると、コレクション上で特定の順序を維持するために使用できます。これは、モデルが追加されると、コレクションの適切な場所に挿入されることを意味します。コンパレータは、sortBy または並べ替え属性を示す文字列を使用して定義できます。
sortBy コンパレータ関数はモデルを取得し、数値または文字列を返します。
ソート比較関数は 2 つのモデルを取得します。最初のモデルが 2 番目のモデルより前にある場合は -1 を返し、2 番目のモデルが最初のモデルより前にある場合は 0 を返します。 1 つのモデルの場合、1 が返されます。
例を見てみましょう:
var Student = Backbone.Model;
var students = 新しい Backbone.Collection;
students.comparator = '名前';
students.add(新しい学生({名前: "名前1", ロール: 9}));
students.add(新しい学生({名前: "名前2", ロール: 5}));
students.add(新しい学生({名前: "名前3", ロール: 1}));
alert(students.pluck('roll'));
モデルのプロパティを変更した場合でも、コンパレータのコレクションは自動的に並べ替えられません。したがって、モデル属性を変更した後に並べ替えが影響を受けると推定される場合は、並べ替えを呼び出す必要があります。
7. 並べ替え
モデルがコレクションに追加されたときに、コレクションの順序を強制的に変更する必要があります。モデルをコレクションに追加するときに並べ替えを無効にするには、{sort: false} パラメーターを渡します。ソートを呼び出すトリガーは、このパラメーターをチェックします。
sortByType: 関数(タイプ) {
this.sortKey = タイプ;
this.sort();
}
ビュー関数:
sortThingsByColumn: 関数(イベント) {
var type = events.currentTarget.classList[0]
this.collections.things.sortByType(type)
this.render()
}
8.ピッキング
Pluck: コレクション内の各モデルから属性を選択します。これは、イテレーターから Map を呼び出して 1 つの属性を返すことと同じです。
var Song = 新しい Backbone.Collection([
{名前: "フラッツ"}、
{名前: "OMC"}、
{名前: "ジャクソン"}
]);
var names = songs.pluck("name");
alert(JSON.stringify(names));
9.どこ
ここで: フィルターを使用して、渡された属性に一致するコレクション内のすべてのモデルの配列を返します。
var Song = 新しい Backbone.Collection([
{名前: "Yes I Do"、アーティスト: "Flatts"}、
{名前: "ハウ・ビザール"、アーティスト: "ハウ・ビザール"}、
{名前: "What Hurts the Most"、アーティスト: "Flatts"}、
]);
var Artist = Song.where({アーティスト: "フラッツ"});
アラート(アーティスト.長さ);
10.URL
サーバーの場所を参照する URL 属性をコレクションに設定します。コレクション内のモデルは、この URL を使用して独自の URL を構築します。
var Songs = Backbone.Collection.extend({
URL: '/songs'
});
var Songs = Backbone.Collection.extend({
URL: function() {
this.document.url() '/songs';
を返す }
});
11. 分析
Parse: サーバーがコレクションのモデルを返すかどうかに関係なく、フェッチ時にバックボーンによって呼び出されます。この関数には元の応答オブジェクトが渡され、コレクションに追加されるモデル プロパティの配列を返す必要があります。デフォルトの実装は no-op です。 JSON 応答を渡すか、既存の API でこの操作をオーバーライドするか、応答に名前空間を付けるだけです。
var songs = Backbone.Collection.extend({
解析: function(response) {
応答を返します。結果;
}
});
12.抽出
Fetch: コレクションのデフォルトのモデルセットをサーバーからフェッチし、取得後にコレクションに設定します。このオプション ハッシュは成功またはエラーのコールバックを受け入れ、3 つのパラメーター (コレクション、応答、オプション) を渡します。その後、モデル データがサーバーから返されます。これは、マージされた抽出モデルをセットアップするために使用されます。
Backbone.sync = function(メソッド, モデル) {
アラート(メソッド ": " モデル.url);
};
var songs = 新しいBackbone.Collection;
songs.url = '/songs';
songs.fetch();
上記のとおり、Backbone のコレクションだけでも非常に多くのメソッドがあり、それらをマスターすることでコードの品質を向上させることができます。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

メモ帳++7.3.1
使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
