Twitter Bootstrap 折叠(手风琴)与 Knockout JSON 映射

4
我希望利用Knockout JSON Mapping和Twitter bootstrap创建一个动态手风琴控件。
var ProductViewmodel;

function bindProductModel(Products) {
    var self = this;
    self.items = ko.mapping.fromJS([]);
    ProductViewmodel = ko.mapping.fromJS(Products.d, self.items);
    ko.applyBindings(ProductViewmodel);
}

var Data = {
    "d": [
        {
        "__type": "Warehouse.Tracntrace.Members_Only.DLL.StockMovement.AvailibleStock",
        "WarehouseID": 1,
        "ProductSKUID": 2,
        "ProductSKUName": "Decoder 1131",
        "WarehouseName": "SoftwareDevelopmentTest",
        "Status": "Staging",
        "QtyUnassigned": 5},
    {
        "__type": "Warehouse.Tracntrace.Members_Only.DLL.StockMovement.AvailibleStock",
        "WarehouseID": 1,
        "ProductSKUID": 3,
        "ProductSKUName": "Decoder 1132",
        "WarehouseName": "SoftwareDevelopmentTest",
        "Status": "Staging",
        "QtyUnassigned": 15}
    ]
};

    function BuildLinkFromJSON() {
        bindProductModel(Data);
        var link;
        link = '<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" data-bind="text: d.ProductSKUName" href="#collapse"></a>';
        return link;
    }


function BuildAccordian(Pane) {
        var link = BuildLinkFromJSON();
        var eventsContainer = document.getElementById('accordion');
        var events = eventsContainer.innerHTML;
        events = events + '<div class="accordion-group"><div class="accordion-heading">'+link+'</div><div id="collapseOne" class="accordion-body collapse in"><div class="accordion-inner">My Content Here</div></div>';
        eventsContainer.innerHTML = events;
    }

    $(document).ready(function () {
        BuildAccordian();
    });

HTML:

<div class="accordion" id="accordion">
</div>

我需要为JSON数据中的每个产品提供标题,标题应显示ProductSKUName和QtyUnnasigned,如果可能的话。我已经创建了这个带有发布的JSON数据和构建手风琴HTML函数的Fiddle
1个回答

4
这个怎么样?http://jsfiddle.net/billaraw/xZHbh/4/ 我基本上添加了循环,以便它可以处理每个项目。
<div class="accordion" id="accordion2">

<!-- ko foreach: $data -->
<h3>
    <span data-bind="text: ProductSKUName"></span> :
    <span data-bind="text: QtyUnassigned"></span>                
</h3 >
<div>
    MyContent
</div>
<!-- /ko -->

</div >​

我需要为每个产品创建一个手风琴面板,因此在这种特定情况下我会得到2个手风琴面板。 - Jacques Bronkhorst
已编辑答案和 Fiddler 链接供您检查。 - billaraw
1
您先生,是位绅士和学者! - Jacques Bronkhorst

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接