問題タブ [ko.observablearray]
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.
javascript - Knockout.js: select 要素の選択をクリア
<select>
要素からの選択をクリアする必要があります。Knockoutjs がコンボボックスで選択された値をクリアするなどの投稿を既に読み、受け入れられた回答を試しましたが、それらの解決策は機能していないようです(回答が受け入れられてから Knockout 2 で何かが変更されたかどうかわかりませんか?) .
ビューモデルの例を次に示します。
がclearSelectedStation
呼び出されると、バインドされたビュー モデル プロパティを に設定する必要があります。これは、バインドされた要素が空白で表示され、オプションのリストが展開されて強調表示された項目が表示null
されないことによって、UI に反映される必要があります。ただし、バインドされた値のプロパティ ( ) をオプションの配列 ( ) にないもの<select>
に設定しようとすると、バインディングが無視されるように見えることに気付きました。selectedStation
stations
このフィドルは、私が話していることを示しています: http://jsfiddle.net/sellmeadog/Su8Zq/1/
必要がなければ、オプション配列を空白の値で「汚染」したくありません。リンクされた投稿の解決策を機能させる方法を知りたいです。
javascript - knockoutJS で observableArray から Self を削除する
部門のツリービューを作成するために、knockoutjs を使用しています。各ノードの隣には、次の 3 つのボタンがあります。1) 新しい子 (隣のノードに適用されます) 2) 削除 (隣のノードを削除します。3) コピー。ノードとそのすべての子をコピーし、新しいノードを作成します。親の下のノード。
New ボタンを押し下げて、今は削除ボタンに取り組んでいます。私はそれを機能させることができないようで、何か役に立つことをする代わりに、ページ全体を更新するだけです。コードは次のとおりです。
意見:
テンプレート:
ビュー モデルと適切なヘルパー関数:
これに関する私の主な質問は次のとおりです。配列からオブジェクトそのものを削除するために、オブジェクトの親配列にアクセスする方法はありますか? 助けてくれてありがとう!
編集: ここに jsFiddle があります: http://jsfiddle.net/eqY7Z/ただし、まったく機能していないようです。皆さんがうまくいかない場合は、ホストされている私のサイトへのリンクを含めて、よく見ることができるようにします.
ajax - ノックアウト マッピング - アイテムのメソッドを保持する Observable Array を埋める
私は基本的に次のような問題に直面しています:
- 観察可能なプロパティとメソッドを持つ項目の観察可能な配列を含むノックアウト ViewModel があります。
- サーバーからデータをプルする必要があります。データがサーバーから取得された後、メソッドが存在する必要があります。そこで、新しい ViewModel を作成し、サーバーから取得した値からその値を更新します。(これは機能しません。結果の配列には項目がありません)
- で作成すると、結果の配列
mapping
を使用して新しいオブジェクトに項目がありますが、その項目にはメソッドがありません。それは私のバインディングを台無しにします。var newObj = ko.mapping.fromJS(data)
私の問題のフィドル: http://jsfiddle.net/claykaboom/R823a/3/ ( 「サーバーからデータをロード」をクリックすると機能します)
最後の質問は、以前に宣言されたメソッドを維持するために、すべてのアイテムを繰り返し処理し、アイテムのプロパティを入力するなど、読み込みプロセスを煩雑にすることなく、最終的な配列にアイテムを配置する最良の方法は何ですか?
ありがとう、
knockout.js - Knockoutjs ObservableArray
次のスニペット-結果は空のリストボックスになります。誰かが私に何が間違っているのか教えてもらえますか?
WorksはjsFiddleです-ブラウザにはありません
javascript - Knockout は、他の関数によってフィルター処理された ObservableArray のバインディングをどのように更新しますか?
私は Knockout.js を非常に広範囲に使用してきましたが、実際にどのように機能するかを理解したい場合によく使用するパターンが 1 つあります。
多くの場合、productModule.products() などのビュー モデルの ObservableArray を使用します。次に、配列フィルター (現在は Underscore.js を使用) を使用してサブセットを返す productModule.getAvailableProducts() などのさまざまなフィルター関数を用意し、その関数を UI にバインドします。私がよく理解していないのは、これらの関数が ObservableArray ではなく標準配列を返すことを考えると、基礎となる ObservableArray を変更すると Knockout のバインディングが更新される方法です。フィドルの例を次に示します。
Knockout は、特定のバインディングが ObservableArray に解決されるかどうかをバインド時に決定しますか? もしそうなら、チェーン内に任意の数のそのような関数が存在できますか?
これを理解するための助けは大歓迎です。
knockout.js - KO.utils.arrayPushAll 選択変更時に新しい要素を別の選択されたボックスとグリッドに追加する
knockout.js ライブラリを使用して MVC4 で記述した JSON 応答からデータを取得しようとしています。これら 3 つの領域にデータを入力する必要があります。最初の領域は複数選択ボックスです。私はオンラインの例と参照、およびここにリンクされているフィドラーを見てきましたが、役に立ちませんでした。私が問題を抱えている領域は、arrayOne リストで選択された各項目について得られるすべてのデータを arrayTwo およびグリッド配列に取り込むことです。
何が返ってくるかを確認するためにレスポンスをjsonしてみましたが、配列形式の値が返ってきました。ただし、arrayOne 変数に複数の要素がある場合、何も返されません。
knockout.js - ノックアウト observableArray プッシュ - 配列にプッシュしない
Knockout で遊んでみましたが、監視可能な配列へのプッシュに問題があります。以下の私のコードは、ボタンのクリックでサーバーからいくつかの json データをフェッチし、オブジェクトの配列を返します。最初の console.log コンソールは問題なく出力されます。オブジェクトの配列は問題なくダンディです。
ただし、各オブジェクトを監視可能な配列にプッシュすることはできないようです。コンソールに空の配列が表示されます。いくつかのバリエーションを試してみましたが、単純なものが欠けているように感じますが、追跡するのに苦労しています.
私がやろうとしているのは、サーバーからいくつかのデータをロードし、それをテンプレートにバインドできる監視可能な配列に入れ、配列の内容を出力するために foreach のようなことを行うことです。
indexing - KnockoutJS: JavaScript テンプレート内から配列内の項目のインデックスにアクセスする
KnockoutJS を使用して、配列からリストを作成します。
次のように、入力の個々のインスタンスにIDを割り当てることができます
listItem 関数内からこのインデックスにアクセスするにはどうすればよいですか? みたいなことができるようになりたい
これをさらに処理するために使用します。
knockout.js - ノックアウト - データのフィルタリングにわずかな問題がある
編集:問題は自分の self.providers = ko.computed() にあると思います。フィルター ボタンのクリックでプロバイダー配列を上書きしています。
すべてをローカルで開発しているため、両方ともHTMLペインにすべてがあり、ファイル全体を分割するのではなく、jsfiddleにコピー/貼り付けする方が簡単です。
また、かなり大きなダミー データ オブジェクトをスタブ化しました。 これは 110 行目から始まるため、ローカルでコピー/貼り付け/実行する場合、そのデータ オブジェクトを最小化できるエディターが必要になることは間違いありません。
最初のフィドルはhttp://jsfiddle.net/82cK7/にあり、正常に動作しているように見えますが、「ライブ」フィルタリングです。プロバイダー名のフィルタリングから始めて、日付フィルタリング用の jquery UI datepicker も追加しました。これにより、緑色のフィルター領域で何かを変更すると、データ テーブルがフィルター処理されます。
ここでの適切なコードは、196 行目のself.filterClaimsです。
2 番目のフィドルはhttp://jsfiddle.net/tq8zc/にあり、正しく動作しません。ここでのフィルタリングは、「フィルター」ボタンをクリックするまで開始されません (これは私が本当に望んでいる動作です)。テーブルをフィルタリングしますが、その選択/ドロップダウンのプロバイダー名の一意のリストを生成するself.providersも吹き飛ばします。したがって、これをフィルター処理する前に、複数のプロバイダー名のリストがあります。フィルタリングすると、「フィルター」を押す前に選択したプロバイダーのみが表示されます。
ここに関連するコードは、166 行目のself.claimsFilteredです。
かなり明らかな何かが欠けているように感じ、コードを他の人に見てもらうことができるかどうか疑問に思っていました。
助けてくれてありがとう!
javascript - knockout.js と observableArray が 2 回目のクリックで DOM を更新しない
以前の回答をたくさん見て、いくつかのことを試しましたが、2回目にapplyBindingsを試みたときにDOMを更新することはできません。
問題を示す次のフィドルを見てください。
$.getJSON() IRL を介してデータをプルしている間、フィドルは、私がフィドルしたインライン JSON とそこにあるコードで問題を再現します。
私が試したことはコメントアウトされています (will/hasMutated、replace、removeAll)。
私が達成したいと思っているのは、図 X (アッシャー) の 5 つのニュース項目の私の要素が、図 Y (ローハン) の 5 つのニュース項目で更新/置き換えられることですが、それさえできれば、進歩の兆しです。 0-4 に追加された要素 5-9 を取得し、10 個の li タグを参照してください。
問題を再現するには、フィドルを実行し、[Do It Again] リンクをクリックして JSON ロードをシミュレートします。新しいデータ要素を表示する代わりに、子のない空白の ul タグが生成されるだけであることに注意してください。