2

KO では、配列内のプロパティに基づいて、オブジェクト配列から Distinct リストを返すことができます。

オブジェクトのコレクションを持つ「ダイアログ」配列があり、オブジェクトのプロパティの 1 つは「写真」と呼ばれます。配列から個別の写真を取り出したいだけです。

これまでの私のコード:

  my.vm.uniquePhotos = ko.computed(function () {
  return ko.utils.arrayGetDistinctValues(my.vm.Dialog());
}, my.vm);

上記のコードは、配列内のすべての「写真」を返していますが、個別の写真が必要です。

    <div id="participants" data-bind='foreach: uniquePhotos'>

       <img data-bind="attr: { src: photo }" />  

   </div>

よろしくメルト

4

1 に答える 1

3

一意の写真のみを含む配列を取得するには、次のことができます。

my.vm.uniquePhotos = ko.computed(function () {

    var photos = my.vm.Dialog();
    var o = {};
    var r = [];   

    for(var i=0; i<photos.length;i++)
       o[photos[i].photo] = photos[i].photo;

    for(i in o)
       r.push(o[i]);
}, my.vm);

または、オブジェクトで必要な情報が写真プロパティだけの場合は、arrayMap を使用して、url を含む配列を取得し、arrayGetDistinctValues を使用できます。

my.vm.uniquePhotosUrl = ko.computed(function () { 
   return ko.utils.arrayGetDistinctValues(
       ko.utils.arrayMap(my.vm.Dialog(), function(p){
          return p.photo;
       })
   );   
}, my.vm);

景色 :

<div id="participants" data-bind='foreach: uniquePhotosUrl '>
    <img data-bind="attr: { src: $data}" />  
</div>

お役に立てば幸いです。

于 2013-11-09T21:01:17.607 に答える