1

我正在使用淘汰赛在页面上显示项目。我有一个组列表,例如:第 1 组,第 2 组,...每个组都在它自己的 div 中。当我单击其中一个组时,它将打开并显示组中的项目。我的一些组没有要显示的任何项目,而不是它没有显示任何我想将其更改为显示:“组中没有项目”

我在 javascript 视图中执行此操作时遇到问题,并认为我可以在我的淘汰赛/jquery 脚本中执行此操作

看法:

<div class="accordion-group elements-by-item">
        <div class="accordion-heading">
            <a class="ui_title accordion-toggle text_x-large item_accordion_toggle" data-toggle="collapse" data-parent="#ByTimeIndex"
                data-bind="text: Title() != null ? Title() : Identity(), attr: { 'href': '#itemContent_' + Id(), 'data-item-id': Id() }">
            </a>
        </div>
        <div class="accordion-body collapse state-loading" data-bind="attr: { 'id': 'itemContent_' + Id(), 'data-item-id': Id() }">
            @Html.Partial("_itemElements")
        </div>
    </div>


    **_itemElements Page:**

    <div class="accordion-inner no_border" data-bind="foreach: Children">
                        <div class="element">
                        ........
                        </div>
    <div>

淘汰赛/Jquery js

$idx.ItemsRetrieved = new Array();

    $idx.GetItemContent = function (element) {
        var _itemId = element.attr('data-item-id');
        var _elementData = $idx.itemData;

        this.GetElementContent({
            groupId: _itemId,
            groupData: _elementData.items,
            elementData: _elementData,
            apiUrl: _courseIndexOptions.GetitemUrlPrefix + _itemId,
            accordionBodySelector: '.accordion-body[data-item-id="' + _itemId + '"]',
            accordionBtnSelector: 'a[data-item-id="' + _itemId + '"]',
            viewModel: $idx.TimeViewModel
        });
    }

    $idx.GetElementContent = function (options) {
        if (linq.From($idx.ItemsRetrieved).Any(function (x) { return x == options.groupId })) {
            $(options.accordionBodySelector).removeClass(constants.StateClasses.Loading);           
            return;                                                                                 
        }

        return Ajax.Get({
            Url: options.apiUrl,
            OnSuccess: function (data) {
                var _items = linq.From(options.groupData);                                          
                var _itemToUpdate = _items.Where(function (x) { return x.Id == options.groupId; });
                if (_itemToUpdate.Any()) {
                    _itemToUpdate.First().Children = data.Items;                                
                }

                ko.mapping.fromJS(options.elementData, options.viewModel);                         
                sections.ElementArray.AddRange(data.Items);                                     

                $(options.accordionBodySelector).removeClass(constants.StateClasses.Loading);       
                $idx.ItemsRetrieved.push(options.groupId);                                       
                $(options.accordionBtnSelector).click();                                           
            }
        });

如何检查子项 ItemsRetrieved = 0 并设置消息“无项目”以显示在视图页面中?

4

1 回答 1

1

你可以这样做:

<div class="accordion-inner no_border" >
    <div data-bind="foreach: Children">
        <div class="element">
        </div>
    </div>
    <span data-bind="if : Children().length == 0">No items in group</span>
<div>

我希望它有所帮助。

于 2013-08-19T20:28:36.863 回答