【问题标题】:Twitter Bootstrap Collapse (Accordion) With Knockout JSON mappingTwitter Bootstrap Collapse (Accordion) 与 Knockout JSON 映射
【发布时间】:2012-12-06 06:46:05
【问题描述】:

我想使用 Knockout JSON Mapping 和 Twitter bootstrap 创建一个动态 Accordion 控件。

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 数据和名为 Build Accordion 的手风琴 HTML 函数创建了这个 Fiddle

【问题讨论】:

    标签: twitter-bootstrap knockout.js knockout-mapping-plugin


    【解决方案1】:

    这个怎么样? 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 个手风琴窗格
    • 编辑了答案和提琴手链接供您检查。
    • 您先生,是君子学者!!
    猜你喜欢
    • 2014-11-26
    • 2016-12-07
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 2018-09-04
    • 2012-04-16
    相关资源
    最近更新 更多