問題タブ [backbone-stickit]
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 - backbone.js ネストされたオブジェクト属性と stickit.js
stickit.js を使用して、双方向のデータ バインディングを実現しています。stickit をネストされたオブジェクト属性にバインドする方法を教えてください。エグの場合
このようなテキスト入力をバインドすることは可能でしょうか。
backbone.js - Backbone stickit を使用したバックボーンの検証 - 1 つが変更されると、すべての属性が検証されます
Backbone Stickit で Backbone Validation を使用しようとしています。ユーザーが入力した属性を一度に 1 つずつ検証したいと考えています。ただし、ユーザーが値を入力すると、ユーザーが変更した属性だけでなく、モデルのすべての属性が検証されます。私は何を間違っていますか?
私の見解:
backbone.js - Backbone + Stickit を使用する場合、View Model オブジェクトは Backbone.Model を拡張する必要がありますか?
大まかに言うと、MVVM パターンのさまざまなコンポーネントは次のとおりです。
Model
: これは、サーバーによって送信され、サーバーに送り返されたデータを表します。これには、UI の表示に関連する状態は含まれませんViewModel
: これは 1 つまたは複数のモデルから構成されます。これには、UI 操作用の状態 (ボタンが有効か無効か) が含まれます。UI 操作用のすべてのロジックがここに格納されます。このレイヤーは、どの UI フレームワークにも依存しません (jQuery 呼び出しはありません)。View
: これは、UI フレームワーク/基礎となる UI コントロールと密結合しています。1 つのビューは、1 つのビュー モデルのみを観察します。ビュー モデルは、1 つ以上のビューで観察できます。ビューは、ビュー モデルとの 2 つのバインドを行う責任があります。- A
presenter/coordinator
: 従来の実装の一部ではありませんが、それがない場合、ビュー モデルはあまりにも多くの責任を負うことになります。この男は、ajax 呼び出し (get/post) の作成、グローバル イベント アグリゲーターでのイベントのリッスンなどを調整するのに役立ちます。
Standalone Backbone には、ビュー モデルとデータ バインディングの概念がありません。そのシナリオでは、サーバーから返されたデータをBackbone.Model
オブジェクトとしてモデル化できます。バインディングは手動で行われ、ビューモデルの同期には POJO を使用できます。
データ バインディングに Stickit を使用する場合、ビュー モデルは のインスタンスである必要があるようですBackbone.Model
。主な理由は、バインディングが a のコンテキスト内で機能し、Backbone.View
aがオブジェクトがビューのプロパティとして存在することをBackbone.View
期待しているためです。Backbone.Model
また、Backbone.Model は変更イベントを発生させます。POJOの観測は難しいと思います。繰り返しますが、これは Stickit のドキュメントを読んだ私の理解です。間違っている場合は修正してください。
Aには、などBackbone.Model
のビュー モデルの観点からは意味をなさない他のメソッドがあります。別の mvvm ライブラリ. をビューモデルに変換できます。本格的な を渡す代わりに、get/set メソッドを持ち、プロパティが変更されたときに変更イベントを発生させる任意の POJO を受け入れることもできます。save
fetch
Knockback
Backbone.Model
Knockout.js
Backbone.Model
Stickit には、get/set メソッドを持ち、変更イベントを発生させる POJO を渡すことができる同様のコントラクトがありますか? おすすめの使い方は?
javascript - backbone.stickit と html-form: 変更された属性のみを保存 (パッチ) する方法は?
tl;dr
backbone.stickit を html フォームで使用して、サーバーからフェッチされた既存のモデルを変更し、変更された属性 (html フォーム内のユーザー入力によって変更された) のみをサーバーにパッチする方法は?
/tl;dr
backbone.js アプリケーションでbackbone.stickitを使用して、モデルをバックボーン ビューの一部である HTML フォームにバインドしています。ここまでは問題なく動作しますが、バインドされたモデルを保存しようとすると、少し複雑になります。これは、PATCH メソッドを使用して、変更された属性のみをサーバーに送信するためです。これまでに行ったことを説明しようとします。
サーバーからモデルを取得する
changedAtrributes()
最後の行は私の問題を示しています。後でメソッドを使用して、サーバーでパッチが必要な属性を取得できると思ったからです。だから私はここで見つけたこの回避策を試しました
stickit-bindings を行う
次に、ビューをレンダリングし、ビューでstickit()
メソッドを呼び出してバインディングを行います。
バインディングは正常に機能し、ユーザー モデルは更新されますが、changedAttributes()
常に空のままです。
モデルをサーバーに保存する
ユーザーが必要な変更をすべて行ったら、モデルをサーバーに保存する必要があります。PATCH メソッドを使用して、変更された属性のみをサーバーに送信したいと考えています。
また
2 番目のアプローチでは、さまざまな結果が得られます。
- 回避策を使用しなかった場合
user.set({})
、すべての属性がサーバーにパッチされます - 回避策を使用すると
user.set({})
、戻り値changedAttributes()
は「false」になり、すべての属性がサーバーに PUT されます - を呼び出す
user.set("age","123")
前に を呼び出すとsave()
、 age 属性のみがサーバーにパッチされます
set()
したがって、結果 3 は私の望ましい動作ですが、これには 2 つの問題があります。最初の stickit は、html フォーム内で属性が変更された場合、属性を更新するためにモデルのメソッドを使用していないようです。次に、ある属性を指定して呼び出しset()
、その後別の属性を指定すると、2 番目の属性のみが によって返されchangedAttributes()
ます。
backbone または backbone.stickit ドキュメントで何かを監視しただけかもしれません。それについてのアイデアはありますか?
javascript - たとえば、フォームの保存が Backbone.stickit でクリックされたときに、ビュー フィールドをモデルに保存する方法
ビューのフィールドが更新されたときにモデルをすぐに更新する必要がある場合は、これまで backbone.stickit を使用していました。しかし、いくつかのケースでは、送信が押されたときにのみモデルを更新する方が適切であることがわかりました。
Stickit がサポートしているevents
ため、モデルのオーバーライドをトリガーするイベントを定義できます。ただし、これらのイベントは入力フィールド固有のものです。
ビュー イベント (のような) のモデルのオーバーライドをトリガーすることは可能clicked:submit
ですか?
アドバイスをありがとう。
backbone.js - backbone.stickit にすべての値を一度に収集させる方法は?
問題:
以前backbone.stickit
は、フォームの 2 方向バインディングを行っていました。ただし、すべての属性を設定updateModel
しない限り、コレクションをキャンセルするのは難しいと感じました。false
問題は、ユーザーが保存ボタンをクリックしたときにフォームからすべての値を取得するにはどうすればよいかということです。
AKA、stickit で一度に手動でデータを収集するにはどうすればよいですか?
手動でトリガーできるように、すべてのハンドラーを取得するためにアクセスしようとしましたが、明らかに、getConfiguration
関数はプライベートであるため、アクセスできません。
javascript - require.js および backbone.stickit と一緒に使用した場合の Backbone.Validation の奇妙なバグ
T. Hedersen の backbone.validation プラグイン ( https://github.com/thedersen/backbone.validation ) をモデル バインディング用の backbone.stickit プラグインと組み合わせて使用しています。モデルの単一の属性が変更されたときにすべてのフィールドを常に検証するという奇妙なエラーが発生しています。ここにコードがあります
モデル
意見
定義(関数(必要){
javascript - バックボーン、変更された要素の ID/名前を取得する
バインディングに stickit で Backbone.js を使用しています。以下のようなものがあります。ユーザーがどの要素をクリックしたかを知るにはどうすればよいですか? (ラジオボタン)