通过knockoutjs获取html中的数组值

时间:2012-12-26 07:15:15

标签: html knockout.js

我从下面的数组中获取价值:

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>

我通过另一个appraoch创建了jsfiddle。但它根据tasknos重复。 jsfiddle in another approach

1 个答案:

答案 0 :(得分:0)

我需要获得单一用户,无论任务是什么。 我添加了一个javascript函数来获取单个用户集并将其放在self.users中。 我已经更新了我的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);});

现在正在努力。