0

以下のような配列から値を取得しています。

self.users = ko.computed(function(){
var list = ko.utils.arrayMap(self.tasks(), function(item){
return item.members + item.skype
});
var val = ko.utils.arrayGetDistinctValues(list);
alert(val);
return val;});

次のような値を示しています。

user1skype_user1, user2skype_user2

しかし、私の問題は、ユーザーの foreach ループ内の html でこの値を表示する必要があることです。私のhtmlコードは以下の通りです:

<tbody data-bind="foreach: users">
<tr>
 <td>
  <b><span data-bind="text: //membername" /></b>
 </td>
 <td>
  <span data-bind="text : //skypeid"></span>
 </td>
 </tr>
//another fareach loop</tbody>

別のアプローチをとってjsfiddleを作成しました。しかし、タスク番号に従って繰り返します。 別のアプローチでのjsfiddle

4

1 に答える 1

0

私の必要性は、タスクの数が何であれ、ユーザーの単一のセットを取得することでした。ユーザーの単一セットを取得してself.usersに配置するJavaScript関数を追加しました。私はjsfiddle http://jsfiddle.net/TQXja/9/で更新しました

self.users = ko.computed(function(){
var distinctUsers = "";
var distinctList = new Array();;

var list = ko.utils.arrayMap(self.tasks(), function(item){
    if(distinctUsers.indexOf("|"+ item.members) == -1)
    {
        distinctUsers += "|"+ item.members;
        return item;
    }
});

//clean empty objects
for(i = 0; i < list.length; i++)
{
    if(list[i] != null)
    {
        distinctList.push(list[i]);
    }
}

return ko.utils.arrayGetDistinctValues(distinctList);});

そして今、その作業。

于 2012-12-27T09:12:55.737 に答える