ノックアウトのネストされたforループでデータバインディング中に2つのデータを比較する方法

マザールMIK

以下を含むJSONファイルがあるとします。

{
    "First" : [
           "A",
           "B",
           "C"
     ],
     "Second" : [
            { "name" : "A"},
            { "name" : "C"}
      ]
}

さて、以下は私が達成しようとしていることを示すために私のHTMLコードの小さな部分です:

<span data-bind="foreach: First">
    <span data-bind="foreach: Second">
        //if First.A === Second.name then do something
    </span>
</span>

その比較を行うにはどうすればよいですか?私は多くのことを試みましたが、正しい方法を理解することができませんでした。$ dataを使用してここ「First」の値にアクセスできることは知っていますが、このネストされたループで何を使用するのでしょうか。私はこれに不慣れです。どんな提案でも大歓迎です。

もう少し情報:私のHTMLコードは実際には次のようなものです:

<span data-bind="foreach: first">
                <tbody data-bind="foreach: $root.second">
                    <tr data-bind="if: $parent === $data.name">
                        //do something
                    </tr>
                </tbody>
.
.
.
</span>

これは機能しません。

OfirD

まず、あなたの質問の最後にHTMLが有効ではありません:あなたが持つことができないtbodyではspan(それを試してみてください:あなたは、ブラウザが無視表示されますtbody)。

さて、あなたの質問に:私はあなたのケースを再現するビューモデルとそれに応じたhtmlをコーディングしました。

ここで理解することが重要なの$parentは、親コンテキストのビューモデルオブジェクト参照しているということです。したがって、次のHTMLで、$parentではforeach: $parent.seconds指すmyVMが、文脈$parentではif: $parent指すfirsts文脈。

var myVM = function () {                                     
  var self = this;
  self.firsts = ['A', 'B', 'C'];
  self.seconds = [{ "name" : "A"}, { "name" : "C"},];
};
ko.applyBindings(new myVM());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<span data-bind="foreach: firsts">
  <span data-bind="foreach: $parent.seconds">
    <span data-bind="if: $parent == $data.name">hello!</span>
  </span>
</span>

それをコーディングする方法は他にもありますが、もう1つは、次のように変更$parent.secondsする$root.seconds(そして同じ結果が得られる)方法です。

var myVM = function () {                                     
  var self = this;
  self.firsts = ['A', 'B', 'C'];
  self.seconds = [{ "name" : "A"}, { "name" : "C"},];
};
ko.applyBindings(new myVM());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<span data-bind="foreach: firsts">
  <span data-bind="foreach: $root.seconds">
    <span data-bind="if: $parent == $data.name">hello!</span>
  </span>
</span>

さらに、エイリアスを追加することで読みやすさを向上させることができます。

var myVM = function () {                                     
  var self = this;
  self.firsts = ['A', 'B', 'C'];
  self.seconds = [{ "name" : "A"}, { "name" : "C"},];
};
ko.applyBindings(new myVM());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<span data-bind="foreach: { data: firsts, as: 'first' }">
  <span data-bind="foreach: { data: $root.seconds, as: 'second' }">
    <span data-bind="if: first == second.name">hello!</span>
  </span>
</span>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

デスクトップ/ラップトップでのみノックアウトデータバインディングを有効にする

分類Dev

ネストされたdom要素で複数のバインディングをノックアウトする

分類Dev

ネストされた構造/コレクションのプロパティをフィルタリングおよびソートするためのRavenDbインデックス(ファンアウトインデックス)

分類Dev

残り火ハンドルバーのネストされたループでインデックスカウンターを取得する

分類Dev

d3.jsで、ネストされた選択の対象となるデータバインディングでインデックスi(またはその場所での強制/強制グループインデックスjの使用)を保持するにはどうすればよいですか?

分類Dev

ノックアウトモデルデータを複数のテーブルにバインドする方法

分類Dev

rでネストされたグループのグループインデックスを作成する方法

分類Dev

動的に生成された要素のデータバインドをノックアウトする

分類Dev

Cisco RV320ルータのファームウェアをアップグレードしましたが、接続されているデバイスがインターネットにアクセスできなくなりました

分類Dev

jQueryデータ処理をopenWeatherAPIのノックアウトバインディングに変更するにはどうすればよいですか?

分類Dev

ノックアウトのFoundationsツールチップのカスタムバインディング

分類Dev

ノックアウトのFoundationsツールチップのカスタムバインディング

分類Dev

自動一意のアトミックカウンターバインディングポイントを取得するにはどうすればよいですか(ハードコードされたバインディングなし=)?

分類Dev

JQueryテンプレートを使用したノックアウトバインディングでデータが表示されませんか?

分類Dev

チェックされたイベントで間違った値を与えるノックアウトデータバインディングのあるチェックボックス

分類Dev

データ属性なしで実行時にノックアウトデータバインディングを作成する方法

分類Dev

ネストされたjsonデータをangularjsドロップダウンにバインドする方法は?

分類Dev

データバインディングノックアウトjs中にスパンが消える

分類Dev

$ parentはノックアウトデータバインディングで無視されます

分類Dev

ネストされたオブジェクトを使用したノックアウトで単純なエディターパターンを使用する

分類Dev

ネストされたオブジェクトを使用したノックアウトで単純なエディターパターンを使用する

分類Dev

JsViewsは、ルートオブジェクトとそのネストされたプロパティでデータバインディングを実行する方法を教えてください。

分類Dev

ネストされたforループのバグを見つける方法は?デバッグのヒント?

分類Dev

データのストリームにステップインし、フィルタリングされたデータの配列を出力するRxjs

分類Dev

viewModel へのノックアウト データ バインディング

分類Dev

ソフトウェアアップデーターがアップデートのインストールを要求しましたが、ターミナルでアップグレードするものが検出されませんでした

分類Dev

Androidデータバインディングを使用して、Android Studioでのレイアウトプレビュー中に表示されるダミー(または「デフォルト」)テキストを指定するにはどうすればよいですか?

分類Dev

Androidデータバインディング。生成された*バインディングクラスのレイアウトxmlファイルを設定する方法

分類Dev

Python:ネストされたループ内からウェブサイトのスクレイピングデータを行から列に変換する

Related 関連記事

  1. 1

    デスクトップ/ラップトップでのみノックアウトデータバインディングを有効にする

  2. 2

    ネストされたdom要素で複数のバインディングをノックアウトする

  3. 3

    ネストされた構造/コレクションのプロパティをフィルタリングおよびソートするためのRavenDbインデックス(ファンアウトインデックス)

  4. 4

    残り火ハンドルバーのネストされたループでインデックスカウンターを取得する

  5. 5

    d3.jsで、ネストされた選択の対象となるデータバインディングでインデックスi(またはその場所での強制/強制グループインデックスjの使用)を保持するにはどうすればよいですか?

  6. 6

    ノックアウトモデルデータを複数のテーブルにバインドする方法

  7. 7

    rでネストされたグループのグループインデックスを作成する方法

  8. 8

    動的に生成された要素のデータバインドをノックアウトする

  9. 9

    Cisco RV320ルータのファームウェアをアップグレードしましたが、接続されているデバイスがインターネットにアクセスできなくなりました

  10. 10

    jQueryデータ処理をopenWeatherAPIのノックアウトバインディングに変更するにはどうすればよいですか?

  11. 11

    ノックアウトのFoundationsツールチップのカスタムバインディング

  12. 12

    ノックアウトのFoundationsツールチップのカスタムバインディング

  13. 13

    自動一意のアトミックカウンターバインディングポイントを取得するにはどうすればよいですか(ハードコードされたバインディングなし=)?

  14. 14

    JQueryテンプレートを使用したノックアウトバインディングでデータが表示されませんか?

  15. 15

    チェックされたイベントで間違った値を与えるノックアウトデータバインディングのあるチェックボックス

  16. 16

    データ属性なしで実行時にノックアウトデータバインディングを作成する方法

  17. 17

    ネストされたjsonデータをangularjsドロップダウンにバインドする方法は?

  18. 18

    データバインディングノックアウトjs中にスパンが消える

  19. 19

    $ parentはノックアウトデータバインディングで無視されます

  20. 20

    ネストされたオブジェクトを使用したノックアウトで単純なエディターパターンを使用する

  21. 21

    ネストされたオブジェクトを使用したノックアウトで単純なエディターパターンを使用する

  22. 22

    JsViewsは、ルートオブジェクトとそのネストされたプロパティでデータバインディングを実行する方法を教えてください。

  23. 23

    ネストされたforループのバグを見つける方法は?デバッグのヒント?

  24. 24

    データのストリームにステップインし、フィルタリングされたデータの配列を出力するRxjs

  25. 25

    viewModel へのノックアウト データ バインディング

  26. 26

    ソフトウェアアップデーターがアップデートのインストールを要求しましたが、ターミナルでアップグレードするものが検出されませんでした

  27. 27

    Androidデータバインディングを使用して、Android Studioでのレイアウトプレビュー中に表示されるダミー(または「デフォルト」)テキストを指定するにはどうすればよいですか?

  28. 28

    Androidデータバインディング。生成された*バインディングクラスのレイアウトxmlファイルを設定する方法

  29. 29

    Python:ネストされたループ内からウェブサイトのスクレイピングデータを行から列に変換する

ホットタグ

アーカイブ