問題タブ [backbone-relational]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
backbone.js - バックボーンを使用したネストされた属性のテンプレート
Appointment
モデルがあり、その各インスタンスにはClient
. 予定を編集するための私のテンプレートは次のとおりです。
私の問題は、Client
属性がサーバーに正しく渡されていないことです。保存時にサーバーに渡される JSON オブジェクトは次のようになります。電話番号を持つクライアントがいるふりをしましょうが、555-555-5555
それを変更し555-555-1234
てフォームを送信します。
無関係なフィールドの多くを省略しましたが、私の言いたいことがわかると思います。client_phone
から555-555-5555
に変更しまし555-555-1234
たがclient
、JSON オブジェクト内のオブジェクトの電話番号は変更されていません。どうにかしてその電話番号を変更する必要があります。
電話番号フィールドのように、これらのフィールドを実際に「取る」ようにするにはどうすればよいclient
ですappointment
かappointment
? それが違いを生む場合、私はバックボーンリレーショナルを使用しています。
javascript - BackboneJS は、初期ロードからイベント OnAdd をキャッチします
fetch() を使用せずにコレクションを作成していますが、JSON データは既に利用可能です。
そのコレクションの各モデルには、このコレクション内のこのモデルの位置である「位置」値の設定が必要です。
私がやろうとしているのは、イベントをキャッチすることです。最初のロードでは、各モデルが JSON から構築され、コレクションに追加されます。
次に、次のようなものを作成します。
残念ながら、コレクションをバインドするイベントが見つかりません。また、このコレクションのモデルには、同じことを行う必要がある他のコレクション (...) が含まれています。
これは奇妙に思えるかもしれませんが、後で私の見解では次のようなことを実行するので、これを行う必要があります。
これが十分に明確であることを願っています。ありがとう!
backbone.js - バックボーン リレーショナル: ネストされた配列属性の要素を localstorage から削除します
「HasMany」コメント(ネストされた配列)のRelationalModel「Todo」があります。このネストされたコレクションから特定のコメントを削除するにはどうすればよいですか? このネストされた配列に「コメント」を追加 (および更新) する方法の例も誰かが提供できれば素晴らしいことです。コレクション全体をローカルストレージに保存する最良の方法はそれですか? ネストされたコレクションから要素を削除して保存するためのすぐに使える機能がないのはなぜですか?
私は試した
this.model.destroy()
と
this.model.bind("破棄", this.remove)
私のCommentView内ですが、これはDOMとバックボーンの「CommentCollection」からコメントを削除するだけで、ローカルストレージからは削除しません。そのため、どういうわけか、CommentCollection と localstorage が同期されません。
localstorage の Todo は次のようになります。
コメントビュー:
jquery - Backbone.js で外部キー関係を持つサブモデルを読み込むにはどうすればよいですか?
これが少し複雑な場合は申し訳ありません...私はまだBackbone.jsを学んでいます...
内部にサブモデルを持つバックボーン モデルを読み込んで保存する適切な方法は何ですか? (そして、サブモデルを持っている必要がありますか?)
たとえば、(coffeescript を許してください)、次のようなものがあるとします。
私が欲しいのは、 dude.fetch() と言って、男と彼のアドレスの両方を取得することです。Backbone.sync('update',dude) を呼び出すと、男と彼のアドレスの両方を保存したいと思います。どのように?
バックエンドでは、tastypie を使用していくつかの SQLAlchemy テーブル (Django の ORM ではない) の API を構築しているため、Person テーブルと Address テーブルのリソースがあります。
Tastypie のForeignKey関数は、URLを問題のアドレスに返すマッピングを作成します。
Dude.parse() 関数をオーバーロードして Address() の fetch を呼び出してみましたが、機能せず、間違っていると感じ、さまざまな疑問が生じました。
- Address をネストされたオブジェクトとして含めるように、tastypie 応答を変更する必要がありますか?
- ネストされたオブジェクトに変更する場合、Backbone-Relational related models not being createdという質問のように、backbone-relationalを使用する必要がありますか、それともやり過ぎですか?
- parse()または fetch() 関数をオーバーロードするか、独自の backbone.Sync() を作成して応答を取得し、これを手動で行う必要がありますか?
- 1 対 1 の場合、サブモデルではなく 1 つのモデルだけを使用して、1 つの要求で情報をまとめて送信する必要がありますか?
これを行う標準的な方法はありますか?
javascript - DOM イベントなしで Backbone.js のビューからモデルに情報を取得する方法
私は Backbone.js を初めて使用し、モデルとビューの関係の適切なアーキテクチャを理解するのに苦労しています。
入力ボックスと、その入力ボックスの内容を取得してサーバーに送信するモデルを保持するビューがあります。
私の問題は、ビューがモデル データを更新するためのリクエストをトリガーする目立たない DOM イベント ( input.change
. 場合によっては、コード自体がモデルに更新をサーバーに送信するように要求する必要があります。
私はこれまで、この問題に対する 3 つの解決策を考えてきました。
入力要素の
keypress
イベントでモデルを更新しますget_input_value()
ビューがモデルで初期化されたら、入力ボックスの値を返す' ' と呼ばれる関数をビューに更新/モデルに追加します。アプリケーションがサーバーを更新するためにモデルを要求する必要がある場合は常に、ユーザーがビューに入力したすべての情報をモデルに更新するビュー内の関数を最初に呼び出します。
これは単純化された例であることに注意してください。ビューには子ビューも含まれており、そのすべてがユーザーが操作できる多くの要素を保持しています。サーバーを更新できるように、このすべての情報でモデルを更新する必要があります。
どんな助けや意見も歓迎します! 本当にありがとう!
編集 :::
machineghost の応答に基づいて、この問題を正しく説明していないことがわかりました。
DOM イベントがありますが、問題は、モデルを使用するビュー内から発生するとは限らないことです。ルーターまたは別のビューから発生し、グローバル イベント ハンドラーによってトリガーされる場合があります。さらに、1:1 のビューとモデルの関係はありません。このモデルは、モデルをさまざまな方法で表現する複数のビューで使用されます。したがって、この場合、サーバーを更新するコマンドはビューを経由するのではなく、モデル自体に送信する必要があるようです。その場合、モデルは「ビューと同期してください!」と言うことができなければなりません。
しかし、ルールを破らずにこれを行う方法がわかりません。これにより、アーキテクチャに関する他の問題が発生します...
backbone.js - Backbone.js - ネストされたモデル & コレクション内の複数のモデル?
backbone.js でモデルをネストできますか? 例: モデル A は、その属性の 1 つをモデル B として持っています。
コレクションに複数のモデル タイプを格納できますか?
javascript - Backbone.js - 「fetch()」から返されるデータの編成をカスタマイズする
モデルの への呼び出し後にサーバーの応答をカスタマイズするにはどうすればよいfetch()
ですか?
私が尋ねる理由は、モデルに複数の子モデルがある状況を扱っているからです。サーバーから返されたデータは、子モデル間で分割する必要があります。
例:
本当にありがとう!
javascript - バックボーンモデルでパブリックメソッドを定義する
バックボーンコレクションを反復処理して、コレクション内のモデルから派生したオブジェクトの配列を取得する必要があります。
問題は、次のオブジェクト内にモデル定義を作成するときに、コレクションが定義されたメソッドにアクセスできるようにする方法がわからないことです。Backbone.Model.extend({})
これは私がこれまでに持っているアーキテクチャの例です:
ここでどこが間違っているのかわかりませんが、いくつかの推測があります。*コレクションはモデルを適切に反復していません。*パブリックメソッドはBackbone.Model.extend({})で定義できません。 *パブリックメソッドの間違った場所を探しています*Backbone.jsの使用目的の誤解から派生した他のアーキテクチャ上の間違い
どんな助けでもありがたいです、どうもありがとう!
編集
問題は、このコードに実際にバグがあったことでした。コレクションにデータが入力されたとき、モデルタイプとして「TheModel」への参照がなかったため、独自のモデルを作成しました。
コレクションを定義するときに、次のコード行を追加する必要がありました。model: TheModel
javascript - Backbone.js ビューにモデルとコレクションを含めることはできますか?
Backbone.jsView
にModel
と を含めることはできますCollection
か?
私が尋ねている理由は、(リーフレット ライブラリを使用して) 場所がプロットされたマップを保持するビューで作業しているためです。
はCollection
、マップ上にプロットされる座標を保持するモデルのグループです。
マップのModel
境界やマップの形状などを保持します。
これを他にどのようにやってのけるかわかりません...
どんな助けでも大歓迎です、ありがとう!
javascript - ビューが置き換えられた後にバックボーン ビュー イベントが発生せず、ページに戻される
問題:
ビュー内で設定されたイベントは、ビューが を使用して別のものに置き換えられ、 を使用$element.html(anotherView)
してページに戻された後に発生しません#element.html(theView)
。
例:
イベントは、このコードの実行後に機能します。
このコードは、後でビューがページ上で別のものに置き換えられたときに発生します。
ビューがページに再度追加されると、イベントは機能しなくなります。