問題タブ [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.
knockout.js - removeall、indexOf などの ko.observablearray の追加機能はサポートされていません。
2 つの ko.observablearray があります。サーバーから取得したいくつかの値を入力している配列の 1 つ:
`self.AllItems = ko.observableArray([]);
モデルの特定のプロパティから取得したデータを含む 2 番目の配列。
これはうまくいきます。
ここで、基本的に「selecteditems」を「allitems」から削除したいと考えています。
私は試した
それはうまくいきませんでした。そしてindexOf
、オブジェクトがこの操作をサポートしていないという例外が発生したときに試していました。私は完全に混乱しています。どこが間違っているのか教えてください。
jquery-ui - 配列を上に移動するときのノックアウトの並べ替え可能なブレーク
誰もこれを見たことがありますか?私はノックアウトソート可能を使用しており、OL で LI 要素を取得して画面上にドラッグすると、効果的にノックアウト配列の上位要素から下位要素 (4 から 0 に移動) に移動すると、すべて正常に動作します。
ただし、0 から 4 に移動すると、渡されたすべてのアイテムは、属性ko29481270e89u012987 ="ko234" を持つアイテムの代わりにそれを見ると、マークアップでノックアウト ID を失っているように見えます。
これはIE8でのみ発生し、私は以下を使用しています:
ノックアウトソート可能 0.8.1 jquery-ui 1.10.x jquery 1.10.x ノックアウト 2.2.1
最新の Chrome、Firefox、IE9 では問題ありません。また、並べ替え可能なリストを含むページは、SharePoint でホストされているとも言えます。
knockout.js - ko.Observable 配列にはデータが含まれていますが、長さプロパティの値は 0 です
ko.observablearray があります。サーバーから取得した値を入力しています。
リストにバインドされた配列があり、すべてのアイテムが含まれているため、これがうまく機能することはわかっています。
ただし、後で AllItems の要素にアクセスすることはできません。
alert(self.AllItems().length);
-- 0 を返します
alert(self.AllItems());
-- 何も返さない
助けてください。
binding - observableArray 内の単一オブジェクトの双方向バインディング
マイページは以下の通りです。
JavaScript は次のとおりです。
プレビュー:
写真では、id = 3 の学生に対応する選択をクリックします。選択した学生の詳細が表示された別のテーブルが表示されます。テキストボックス 1 に何かを入力すると、テキストボックス 2 は更新されず、その逆も同様です。
それを実現するために何をすべきか?
javascript - 新しい要素を作成するのではなく、ノックアウトforeachで既存の要素に追加する方法
これはちょっとニッチなケースですが、単純なチャット ルーム スタイルのシナリオがあります。
そのため、観察可能なチャット エントリの配列が存在します (これは、パフォーマンスを良好に保つためにページングされる 100 エントリに制限される可能性があります)。
したがって、現在の foreach は次のようになります。
現在、エントリごとに新しいチャット エントリが追加されます。これは問題なく、次のように表示されます。
ただし、次の投稿が同じ人によるものである場合は、既存のチャット エントリに追加するだけでよいという要件が現在あります (恐ろしいペイント ジョブバイを許してください)。
そして、ノックアウトでこれを行う方法がわかりません... afterRender を実行して、前のエントリのポスターと同じかどうかを確認してから、作成されたすべての dom を削除し、前のエントリを見つけて jquery を使用できると考えていましたまたは何か要素を追加するだけですが、dom を手動で操作しているので、これは非常にハックのように感じます。
この問題を解決する良い方法はありますか?
==編集==
いくつかのことを明確にするために、現在、新しいエントリが入るたびに常に監視可能な配列に追加していますが、何か新しいものが入るたびに配列を再作成するという議論があります。少しですが、これを行うことと個々のエントリを追加することの目に見える影響についてはわかりません。
現在、カットオフ ポイントの後に 50 のバッファがあるため、メイン アレイは約 100 を格納し、さらに 50% (最大 150 エントリ) を許可し、それを超えると、最後の 50 エントリをカットオフしてアレイを再作成します。 、再び 100 のエントリがあるため、ユーザーはページを戻して前のエントリを表示できます。そのため、これによりレクリエーションが減少しますが、最終的にはもう少し複雑になる可能性があるように思えます. 入ってくるすべてのチャットは localstorage にローカルに保存されるため、サーバーを必要とせずにすばやくページングできるため、チャット データが失われる心配はありません。