Backbone.jsフレームワークのModelとCollectionの使用例_基礎知識
モデル
バックボーンに関して、最も基本的なものはモデルです。これはバックエンド開発におけるデータベース マッピング モデルのようなもので、データ オブジェクトのモデルでもあり、バックボーンと同じ属性を持つ必要があります。エンドモデル (フロントエンドを通じて操作する必要があるプロパティのみ)。
バックボーン モデルとは何かを理解するために、例を段階的に説明します。
まず HTML ページを定義します:
<!DOCTYPE html> <html> <head> <title>the5fire-backbone-model</title> </head> <body> </body> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> <script src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.4/underscore-min.js"></script> <script src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script> <script> (function ($) { /** *此处填充代码 **/ })(jQuery); </script> </html>
この HTML の script タグ内の関数に次のコードを入力する必要があります。
1. 最も単純なオブジェクト
Man = Backbone.Model.extend({ initialize: function(){ alert('Hey, you create me!'); } }); var man = new Man;
これは非常に単純です。helloworld にもモデル表示があり、初期化中のメソッド (コンストラクターと呼ばれます) は定義されていません。
2. オブジェクトの割り当ての 2 つの方法
最初の方法は、直接定義してデフォルト値を設定することです。
Man = Backbone.Model.extend({ initialize: function(){ alert('Hey, you create me!'); }, defaults: { name:'张三', age: '38' } }); var man = new Man; alert(man.get('name'));
2 番目のタイプは、
を割り当てるときに定義されます。
Man = Backbone.Model.extend({ initialize: function(){ alert('Hey, you create me!'); } }); man.set({name:'the5fire',age:'10'}); alert(man.get('name'));
Getは値を取得する際に使用します。
3. オブジェクト内のメソッド
Man = Backbone.Model.extend({ initialize: function(){ alert('Hey, you create me!'); }, defaults: { name:'张三', age: '38' }, aboutMe: function(){ return '我叫' + this.get('name') + ',今年' + this.get('age') + '岁'; } }); var man = new Man; alert(man.aboutMe());
4. オブジェクトの属性の変更を監視する
Man = Backbone.Model.extend({ initialize: function(){ alert('Hey, you create me!'); //初始化时绑定监听 this.bind("change:name",function(){ var name = this.get("name"); alert("你改变了name属性为:" + name); }); }, defaults: { name:'张三', age: '38' }, aboutMe: function(){ return '我叫' + this.get('name') + ',今年' + this.get('age') + '岁'; } }); var man = new Man; man.set({name:'the5fire'}) //触发绑定的change事件,alert。
5. オブジェクトの検証ルールとエラー プロンプトを追加します
Man = Backbone.Model.extend({ initialize: function(){ alert('Hey, you create me!'); //初始化时绑定监听 this.bind("change:name",function(){ var name = this.get("name"); alert("你改变了name属性为:" + name); }); this.bind("error",function(model,error){ alert(error); }); }, defaults: { name:'张三', age: '38' }, validate:function(attributes){ if(attributes.name == '') { return "name不能为空!"; } }, aboutMe: function(){ return '我叫' + this.get('name') + ',今年' + this.get('age') + '岁'; } }); var man = new Man; man.set({name:''}); //根据验证规则,弹出错误提示。
6. オブジェクトの取得と保存には、サーバー側のサポートが必要です。
まず、オブジェクトの url 属性を定義する必要があります。save メソッドが呼び出されると、オブジェクトのすべての属性がサーバーに送信されます。
Man = Backbone.Model.extend({ url:'/save/', initialize: function(){ alert('Hey, you create me!'); //初始化时绑定监听 this.bind("change:name",function(){ var name = this.get("name"); alert("你改变了name属性为:" + name); }); this.bind("error",function(model,error){ alert(error); }); }, defaults: { name:'张三', age: '38' }, validate:function(attributes){ if(attributes.name == '') { return "name不能为空!"; } }, aboutMe: function(){ return '我叫' + this.get('name') + ',今年' + this.get('age') + '岁'; } }); var man = new Man;; man.set({name:'the5fire'}); man.save(); //会发送POST到模型对应的url,数据格式为json{"name":"the5fire","age":38} //然后接着就是从服务器端获取数据使用方法fetch([options]) var man1 = new Man; //第一种情况,如果直接使用fetch方法,那么他会发送get请求到你model的url中, //你在服务器端可以通过判断是get还是post来进行对应的操作。 man1.fetch(); //第二种情况,在fetch中加入参数,如下: man1.fetch({url:'/getmans/'}); //这样,就会发送get请求到/getmans/这个url中, //服务器返回的结果样式应该是对应的json格式数据,同save时POST过去的格式。 //不过接受服务器端返回的数据方法是这样的: man1.fetch({url:'/getmans/',success:function(model,response){ alert('success'); //model为获取到的数据 alert(model.get('name')); },error:function(){ //当返回格式不正确或者是非json数据时,会执行此方法 alert('error'); }});
注: 上記のコードは正常に実行できるコードのみですが、後ほどサーバー側の例を示します。
ここでもう 1 つ追加すべき点は、サーバー上のすべての非同期操作は Backbone.sync メソッドを通じて完了し、このメソッドが呼び出されるときにパラメーターが自動的に渡され、そのパラメーターに基づいて対応するリクエストがサーバーに送信されることです。 。たとえば、保存すると、Backbone はオブジェクトが新規であるかどうかを判断し、変更されただけの既存のオブジェクトである場合はパラメータを更新します。メソッドの場合、パラメータが読み取られ、destroy の場合、パラメータは削除されます。これは CRUD (「作成」、「読み取り」、「更新」、または「削除」) とも呼ばれ、これら 4 つのパラメーターに対応するリクエスト タイプは POST、GET、PUT、および DELETE です。このリクエスト タイプに基づいて、サーバー上で対応する CRUD 操作を実行できます。
注:
URL と urlRoot に関しては、URL を設定すると、CRUD は対応するリクエストをこの URL に送信しますが、もう 1 つの問題は、リクエストが送信されてもデータが送信されない場合、サーバーは削除リクエストを送信しないことです。どのオブジェクト (レコード) を削除する必要があるかがわかるため、urlRoot の別の概念を示します。urlRoot を設定した後、PUT リクエストと DELETE リクエストを送信するときに、リクエストされる URL アドレスは /baseurl/[model.id ] になります。 URL の後ろにある値を抽出することで、サーバー側の対応するオブジェクト (レコード) を更新または削除します。
コレクション
コレクションは、モデル オブジェクトの順序付けされたコレクションです。いくつかの例を参照すると、その概念が非常に簡単に理解できるでしょう。
1. 本と本棚の例
Book = Backbone.Model.extend({ defaults : { // 感谢网友蓝色动力指正改为defaults title:'default' }, initialize: function(){ //alert('Hey, you create me!'); } }); BookShelf = Backbone.Collection.extend({ model : Book }); var book1 = new Book({title : 'book1'}); var book2 = new Book({title : 'book2'}); var book3 = new Book({title : 'book3'}); //var bookShelf = new BookShelf([book1, book2, book3]); //注意这里面是数组,或者使用add var bookShelf = new BookShelf; bookShelf.add(book1); bookShelf.add(book2); bookShelf.add(book3); bookShelf.remove(book3); //基于underscore这个js库,还可以使用each的方法获取collection中的数据 bookShelf.each(function(book){ alert(book.get('title')); });
非常に簡単で、説明は不要です
2. フェッチを使用してサーバーからデータを取得します
まず、上の Bookshelf に URL を定義します。コレクションには urlRoot 属性がないことに注意してください。または、次のように、fetch メソッドで url の値を直接定義します:
bookShelf.fetch({url:'/getbooks/',success:function(collection,response){ collection.each(function(book){ alert(book.get('title')); }); },error:function(){ alert('error'); }});
正しい形式のデータが返された場合は、success メソッドが呼び出され、戻り値を受け取る 2 つのメソッドも定義されていると思います。もちろん、error メソッドも呼び出されます。success メソッドと同じ仮パラメータを追加します。
BookShelf の対応する戻り形式は次のとおりです: [{'title':'book1'},{'title':'book2'}....]
3.リセット方法
このメソッドは、上記のフェッチと連携する必要があります。コレクションがデータをフェッチした後、リセット メソッドを呼び出すため、コレクション内でリセット メソッドを定義するか、リセット メソッドをバインドする必要があります。バインディングを使用したデモは次のとおりです:
bookShelf.bind('reset',showAllBooks); showAllBooks = function(){ bookShelf.each(function(book){ ​//将book数据渲染到页面。 }); }
バインディングステップはフェッチの前に実行する必要があります。
コレクションの完全なコードを以下に示します。これにはサーバー側のサポートが必要です。サーバー側の構築については後で説明します。
<!DOCTYPE html> <html> <head> <title>the5fire-backbone-collection</title> </head> <body> </body> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> <script src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.4/underscore-min.js"></script> <script src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script> <script> (function ($) { //collection是一个简单的models的有序集合 //1、一个简单的例子 Book = Backbone.Model.extend({ defaults : { // 感谢网友蓝色动力指正改为defaults title:'default' }, initialize: function(){ //alert('Hey, you create me!'); } }); BookShelf = Backbone.Collection.extend({ model : Book }); var book1 = new Book({title : 'book1'}); var book2 = new Book({title : 'book2'}); var book3 = new Book({title : 'book3'}); //var bookShelf = new BookShelf([book1, book2, book3]); //注意这里面是数组,或者使用add var bookShelf = new BookShelf; bookShelf.add(book1); bookShelf.add(book2); bookShelf.add(book3); bookShelf.remove(book3); /* for(var i=0; i<bookShelf.models.length; i++) { alert(bookShelf.models[i].get('title')); } */ //基于underscore这个js库,还可以使用each的方法获取collection中的数据 bookShelf.each(function(book){ alert(book.get('title')); }); //2、使用fetch从服务器端获取数据,使用reset渲染 bookShelf.bind('reset', showAllBooks); bookShelf.fetch({url:'/getbooks/',success:function(collection,response){ collection.each(function(book){ alert(book.get('title')); }); },error:function(){ alert('error'); }}); showAllBooks = function(){ bookShelf.each(function(book){ ​//将book数据渲染到页面。 }); } //上述代码仅仅均为可正常执行的代码,不过关于服务器端的实例在后面会有。 })(jQuery); </script> </html>

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











顔の検出および認識テクノロジーは、すでに比較的成熟しており、広く使用されているテクノロジーです。現在、最も広く使用されているインターネット アプリケーション言語は JS ですが、Web フロントエンドでの顔検出と認識の実装には、バックエンドの顔認識と比較して利点と欠点があります。利点としては、ネットワーク インタラクションの削減とリアルタイム認識により、ユーザーの待ち時間が大幅に短縮され、ユーザー エクスペリエンスが向上することが挙げられます。欠点としては、モデル サイズによって制限されるため、精度も制限されることが挙げられます。 js を使用して Web 上に顔検出を実装するにはどうすればよいですか? Web 上で顔認識を実装するには、JavaScript、HTML、CSS、WebRTC など、関連するプログラミング言語とテクノロジに精通している必要があります。同時に、関連するコンピューター ビジョンと人工知能テクノロジーを習得する必要もあります。 Web 側の設計により、次の点に注意してください。

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

株式分析に必須のツール: PHP および JS でローソク足チャートを描画する手順を学びます。特定のコード例が必要です。インターネットとテクノロジーの急速な発展に伴い、株式取引は多くの投資家にとって重要な方法の 1 つになりました。株価分析は投資家の意思決定の重要な部分であり、ローソク足チャートはテクニカル分析で広く使用されています。 PHP と JS を使用してローソク足チャートを描画する方法を学ぶと、投資家がより適切な意思決定を行うのに役立つ、より直感的な情報が得られます。ローソク足チャートとは、株価をローソク足の形で表示するテクニカルチャートです。株価を示しています

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

インターネット金融の急速な発展に伴い、株式投資を選択する人がますます増えています。株式取引では、ローソク足チャートは一般的に使用されるテクニカル分析手法であり、株価の変化傾向を示し、投資家がより正確な意思決定を行うのに役立ちます。この記事では、PHP と JS の開発スキルを紹介し、株価ローソク足チャートの描画方法を読者に理解してもらい、具体的なコード例を示します。 1. 株のローソク足チャートを理解する 株のローソク足チャートの描き方を紹介する前に、まずローソク足チャートとは何かを理解する必要があります。ローソク足チャートは日本人が開発した
