問題タブ [knockout-3.0]
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.
knockout.js - ノックアウト バインディング value.update がカスタム バインディングおよび defineProperty で呼び出されない
Knockout 拡張機能のknockout-secure-bindingを使用していますが、問題が発生しました。
特に、Object.defineProperty
ノックアウトes5 のように を使用する場合、 で変更イベントがトリガーされたときにバインディングの関数は呼び出されませvalue
ん。update
input
私の単体テストはその特異性を示しています。これは機能します:
これ (knockout-es5 がプロパティを定義する方法) は機能しません。
後者の場合、前述のように、value.update
が呼び出されたときに呼び出されていませんinput.dispatchEvent
。
カスタムバインディングは独自の を返しているvalueAccessor
ため、問題はそれに関連していると思います。オブジェクトのプロパティでは機能するが、 では機能しないというのは特に奇妙に思えdefineProperty
ます。
jquery - ノックアウト observableArray が JQuery アコーディオンを更新しない
ウェブサイトを最新の JQuery、JQueryUI、KnockOutJS に更新しました。
それ以来、監視可能な配列に項目を追加すると、アコーディオンが更新を拒否します。これは、JQuery の古いバージョンで KnocKOutJS バージョン 2.0.0 を使用する場合に問題なく機能します。
JSFiddler で問題を再現しました。助けていただければ幸いです。JavaScript は、実際のコードを大幅に簡略化したものです。
http://jsfiddle.net/glenb/M9222/6/
どんな援助でも大歓迎です。私のモデルは次のようになります。
HTML:
最後に、最初にデータを入力してバインドします
jquery - ノックアウト 3 のデータバインドの問題
私のアプリケーションでは、ブートストラップとノックアウトを MVC4 に統合しようとしています。ユーザーが項目を選択できる 2 つのドロップダウン コントロールがあり、jQuery を使用してその横のテキスト ボックスに入力します。ViewBag と @foreach ループを使用すると問題なく動作しますが、ノックアウト オブザーバブルを使用しようとすると問題が発生します。
ViewModel のデータがドロップ ダウン コントロールに表示されるのを確認できますが、テキスト ボックスの値は更新されません。使用すべき特別なデータ バインド属性はありますか?
いくつかのコード...
色が正常に機能しているため、問題は foreach の名前にあります。
これを使用してページ上のコントロールを見つけ、選択したアイテムを取得して入力コントロールに配置します...これが現在、[色] ドロップダウンでのみ機能することを確認しました。
以下の両方のアプローチを試してみましたが、役に立ちませんでした。最初の応答から始めましょう....
ページ上部のタグに次を配置しました
次に、ページの上部に新しいものを配置しました。
最後に、このコードをブートストラップ ドロップダウンに配置しました。
ドロップダウンは空で、div は更新されません。
OK、作成した ViewModel を取得してクリックを統合した後: function() {$root.Name(Name);} 期待どおりに値の更新を確認できるようになりました。
これが私のビューモデルコードです
asp.net-mvc-4 - ノックアウト可観測配列
私の MVC4 アプリケーションの ViewModel には、ajax 呼び出しから名前を取得し、Bootstrap 3 を使用しているページ内の単純なコントロールを設定するためのコードがいくつかあります。ajax 呼び出しを使用すると、UI にデータが表示されますが、コントロールが更新されず、理由がわかりません。データが存在することを確認し、ajax 呼び出し内で self.Names = ko.observableArray を設定しようとしました。簡単な理由はありますか?前述したように、両方のシナリオでフォーム内にデータが表示されますが、期待どおりの更新が表示されません。
ajax 呼び出しを介した本文からの応答は次のとおりです。
私のHTML
knockout.js - ノックアウトで複数のオブザーバブルの同じイベントをサブスクライブする
ノックアウトで次の動作を実装しようとしていました。ユーザーがログインとパスワードを送信し、それが間違っている場合、エラーメッセージを表示します。ユーザーが入力のいずれかを変更すると、メッセージが非表示になります。
計算されたオブザーバブルで試してみたところ、これが正しいアプローチではないことがわかりました。ドキュメントを読んだ後、サブスクライブについて見つけました。そのため、それぞれをサブスクライブすると、すべてがうまく機能しますinput
。問題は、両方のオブザーバブルを同じイベントにサブスクライブしていることです (したがって、コードが複製されます)。複製コードを関数に入れ、各オブザーバブルを関数にサブスクライブできることは知っていますが、これもあまり良くありません。
この空の話はもう十分です。これが私のフィドルです(make it wrong をクリックしてから何かを入力しますinput
)。
ここで同様の質問を読み込もうとしましたが、複数のオブザーバブルを同じイベントにサブスクライブする方法を正確に理解できませんでした。
knockout.js - ノックアウトで多くのテンプレートを処理するには?
ノックアウトで作業している間、私はテンプレートをよく使用します。私は単一ページのアプリケーションで作業しているため、使用するテンプレートの量はますます大きくなっています。
私のメインのhtmlは次のようになりました:
それにもかかわらず、すべてが期待どおりに機能しますが、最初にロードされる膨大な量のテンプレートに怯えています.
では、この問題に関するベストプラクティスはありますか? または、ノックアウトの経験が豊富な人はどのように対処していますか?
asp.net-mvc-4 - ViewModel に格納されている値をアラートで表示する
アプリケーションの viewModel に多くの項目があり、それらの値をアラート ボックスに表示して、そこに実際に何が格納されているかを確認したいと考えています。このビュー モデルをコントローラーに戻そうとすると、値が表示されず、代わりに「viewModel」が定義されていないというエラーが表示されます。
これが私のビューモデルスクリプトの例です
グローバル変数またはクラス レベル変数を作成する場合と同様に、このビューモデルにすべての監視可能なアイテムの現在の値をすべて含めたいと考えています。