Javascript 使用knockoutjs绑定和显示字典

Javascript 使用knockoutjs绑定和显示字典,javascript,knockout.js,Javascript,Knockout.js,我使用knockout,我的viewmodel中有一个observablearray(MappedCompignByInterest),它包含对象数组,每个对象就像字典一样,它包含一个字符串键和一个对象数组(Compign)值。请问如何将此对象与knockoutjs上的表绑定 这是我的viewmodel: function DashboardViewModel() { var self = this; self.BuzzCompaignByInterest

我使用knockout,我的viewmodel中有一个observablearray(MappedCompignByInterest),它包含对象数组,每个对象就像字典一样,它包含一个字符串键和一个对象数组(Compign)值。请问如何将此对象与knockoutjs上的表绑定

这是我的viewmodel:

    function DashboardViewModel() {
    var self = this;        
    self.BuzzCompaignByInterest = ko.observableArray([]);
}

这是用于从服务器加载数据的

  //    Load initial state from server,
    $.getJSON("/Dashboard", function (Data) {            
        var mappedCompaignByInterest = Data.BuzzCompaignByInterest;            
        self.BuzzCompaignByInterest(mappedCompaignByInterest);                        
       });
请注意,Data.BuzzCompaignByInterest希望从服务器获得它是一个字典,键是一个字符串,值是一个对象数组(Compaign) 以下是Compaign类的属性:

 public class BuzzCompaignModel
{
    public long BuzzCompaignId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
 }

请说明如何显示BuzzComapignByInterest(viewmodel中的observablearray)中的数据。

我假设您的字典项类似于此类:

function DictionaryItem(key, value) {
                this.key = key;
                this.value = value;
            }
其中value是您的BuzzCompaignModel,如下所示:

function BuzzCompaignModel(id, name, description) {
            this.id = id;
            this.name = name;
            this.description = description;
        }
使用初始化的BuzzCompaignModel分配DictionaryItem集合后,可以使用以下方法绑定此数组:

    <table>
        <tbody data-bind="foreach:BuzzCompaignByInterest">

            <tr>
                <td data-bind='text:key'></td>
                <td data-bind='text:value.id'></td>
                <td data-bind='text:value.name'></td>
                <td data-bind='text:value.description'></td>
            </tr>
        </tbody>
    </table>


还有示例

请发布一些代码。示例包括1)viewmodel的结构,2)所需的输出(表格应该是什么样子的),以及3)您尝试过的内容。酷,更好。所以javascript的“关联数组”实际上只是具有属性的对象,javascript没有字典。这将是一个棘手的问题,因为您的值是对象。字典不能直接序列化为JSON,这是必要的步骤。这个问题有一个解决方法,但它需要修改才能与代码一起使用:你的结果是一个字典而不仅仅是一个列表,这有什么原因吗?这意味着我必须在发送之前修改服务器中的对象?是的,javascript不知道如何转换字典(你可以滚动一些东西,但这会很复杂)。还有一个问题更适合你的目标: