2

我使用淘汰赛,我的视图模型中有一个 observablearray (mappedCompaignByInterest),其中包含对象数组,每个对象都像字典,它包含字符串键和对象数组 (Compaign) 的值。请问如何将此对象与knockoutjs上的表绑定。

这是我的视图模型:

    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)

4

1 回答 1

1

我假设您的字典项目看起来像这个类:

function DictionaryItem(key, value) {
                this.key = key;
                this.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>

还有jsfiddle的例子

于 2012-07-27T08:19:07.843 回答