問題タブ [knockout-binding-handlers]
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.
google-maps - ノックアウト Google マップ: コンポーネントとカスタム バインディング ハンドラー
「Knockout Google Maps」をグーグルで検索すると、KO ベースの Google マップの実装がかなり見つかります。私が見つけることができたものはすべて、カスタム バインディング ハンドラーを使用するアプローチを採用していましたが、当初はそれを Knockout コンポーネントとして実装するつもりでした。
例:
- http://www.codeproject.com/Articles/351298/KnockoutJS-and-Google-Maps-binding
- http://www.hoonzis.com/knockoutjs-and-google-maps-binding/
- https://github.com/manuel-guilbault/knockout.google.maps
ここでKOコンポーネントよりもカスタムバインディングハンドラーを好む理由を誰かが正しい方向に向けることができますか?
私の計画されたユースケースはこれです:
住所検索結果のリストを含むページを実装しています。これまでのリストは KO コンポーネントであり、各リスト エントリは、リスト コンポーネントが foreach バインディングで繰り返し呼び出す別の KO コンポーネントによって生成されます。この検索結果のリストの横に、結果エントリもマップに表示する Google マップが必要です。また、リスト、リスト エントリ、およびマップの間には、非常に多くの相互作用があります。
ここに私がこれまでに持っているものがあります:
knockout.js - UI を更新しない 2 次元ノックアウト ソート可能
最初の次元 (テーブルの行) と 2 番目の次元 (行のセル) を持つ 2 次元の並べ替え可能なコンテナーを作成しています。
セルは、行内、既存の行、動的に作成された新しい行にドラッグできる必要があります。空の行は動的に削除する必要があります。セルは、行内のすべてのスペースを占めるように構成されています。
カスタム Knockout ソート可能バインディング (update
イベントなど) を編集するには?
前:
後:
更新の問題:
- セル (
.sortable-cell
) を新しい行 (.sortable-table
/.sortable-row
) にドラッグすると、viewModel は更新されますが、UI は更新されません - セル ( ) を新しい行 ( / )
.highlight-horizontal
にドラッグすると、プレースホルダー ( ) が表示されない.sortable-cell
.sortable-table
.sortable-row
javascript - ノックアウトの foreach/descendant バインディングのルート モデルにオブザーバブルが存在する場所を知る
これは、理想的にはプロパティにバインドできる必要があるが、そのプロパティがルート ビュー モデル内のどこにあるかを知ることができる必要がある、非常にニッチなシナリオです。
たとえば、次のオブジェクトがあるとします。
ここでの問題は、次のようなバインディングがある場合です。
今、私はただ反対するためname
にここで解決できる必要があります. 現在、プロパティが値を見るだけであることをバインディングで知る方法はないと思うので、これを文字列として渡すか、バインディングが見えるオブジェクトにカスタム属性を持たせる必要があるかもしれません為に。いずれにせよ、バインディングのスコープ内で (そのスコープに適用された rootModel に関連して) 各オブザーバブルのプロパティ パスを何らかの形で取得できる必要があります。rootModel.groups[currentIndex].name
name
"name"
私はそれが狂っているように見えることを知っています. foreach は、子バインディング スコープが変更されてラップされるシナリオの 1 つにすぎないため、すべてのシナリオでproperty-path
、このカスタム バインディングで使用される for プロパティを構築できる必要があります。
これを行う方法はありますか?
knockout.js - Knockoutjsカスタムバインディングハンドラーメソッドが起動しない
ノックアウトでカスタム bindingHandler を作成することにより、knockoutjs とブートストラップ モーダルを一緒に再生しようとしていますが、何らかの理由で bindingHandler の初期化と更新関数が起動しません (これが実行されるかどうかを確認するために印刷を追加しましたが、実行されないことが確認されます)。
私の bindingHandler 宣言は次のとおりです。
そして私のhtml:
何か案は?
knockout.js - ノックアウト カスタム バインディングの更新が機能しない
hasFocus がこのように機能するようにカスタムバインダーを追加しようとしています
};
しかし、それがこの機能に入ることは決してありません。私はこの例に従っています
http://jsfiddle.net/mbest/tAGmp/
問題は、私の入力フィールドが最初に表示されないことです。どこかをクリックすると、表示されます。入力欄はこんな感じ
ハードコード値 true で動作させようとしていました。それが機能する場合、私はそれをいくつかの観測可能なものに変更します。何かご意見は?
knockout.js - ノックアウト バインディングの繰り返し
Observable フラグに基づいて、ABC と XYZ を繰り返す必要があるシナリオがあります。
現在のコード
コードの重複を感じています。
2 つの html 関数を 1 つにグループ化する方法はありますか?
その他の事情でHTML部分だけ変更したいのですが…
ノックアウト初心者です。誰かが私を助けることができますか?
javascript - KnockoutClassBindingProvider: foreach バインディングを実行する方法
github で基本的な例を見ましたが、自分のコードで動作させることができません。デュランダルを使用していることを付け加えておきます。
バインディングを機能させるにはどうすればよいですか? 私は何か間違ったことをしていますか?
入力.js
Form.js
Module.js
Module.htmlこれは機能しません。
Module.htmlこれは機能しますが、foreach に classBindingProvider を使用していません。
エラー メッセージはありませんが、バインディングは発生しません。3 つの空の入力フィールドが表示されます。
knockout.js - Knockout バインディングを要素に適用するにはどうすればよいですか?
ブラウザー ウィンドウの幅に基づいて計算を行うカスタム Knockout バインディング ハンドラーを使用して、ルート要素の font-size を動的に設定したいと思います。
バインディングを適用しようとすると、何も起こらないように見えたので、単純な css バインディングを適用しようとしました。
<html data-bind="css: { bindinghandlertest: true }">
しかし、バインディング ハンドラーはクラスを追加していないようです。
質問: KO バインディングはとその子にのみ適用できますか?<body>
注:ページ全体のすべてのバインディングを、ko.applyBindings();
DOM の準備が整ったときにパラメーターをまったく使用せずに 1 回呼び出すだけで初期化しています。