0

ノックアウトマッパーを使用してマップし、そこから観察可能なプロパティを作成するビューモデルがあります。

var viewModel= {
    "Name": "Josh",
    "Position": "Developer",
    "PersonalInfo": [{
         "CashierMail": "Test@testin.com",
          "Phone": "1234",

    }]    
  }

var myViewModel = ko.mapping.fromJS(viewModel); 

私は次のhtmlを持っています:

<div>
The name is <span data-bind="text: Name"></span>
    <div id="info">
        Mail is <span data-bind="text: CashierMail"></span>
        <br>
        Position is <span data-bind="text: Position"></span>
        <br>
        Phone is <span data-bind="text: Phone"></span>
    </div>
</div>

これは、myViewModelからのバインディングを1つだけ使用した元のコードであり、機能します。

http://jsfiddle.net/KHFn8/837/

私が達成したいのは、IDが「info」のdiv内のフィールドに、PersonalInfoの監視可能な配列からのデータを入力することです。言い換えると、if<div id="info">がコンポーネントであり、独自のデータソースが入力されます。

だから私はこのようなことを試みます:

ko.applyBindings(myViewModel);
ko.applyBindings(myViewModel.PersonalInfo[0], document.getElementById("info"));

しかし、それは機能しません。

しかし、私は上記のようなことをしたいと思います。動作していないコードは次のとおりです。

http://jsfiddle.net/KHFn8/833/

私は私の場合に似ているこのトピックを読みましたが、それでもそれを機能させることができませんでした:

Knockout.js ko.applyBindings()階層バインディング

私はjavascriptとノックアウトにかなり慣れていないので、コードの動作に関するヘルプをいただければ幸いです。お手数をおかけしますが、よろしくお願いいたします。

4

1 に答える 1

1

observableArray hold内のアイテムにアクセスしようとすると、次のように基になる配列にアクセスする必要があります。

myViewModel.PersonalInfo()[0]

http://jsfiddle.net/rniemeyer/KHFn8/844/

于 2012-08-07T13:45:06.757 に答える