3

我试图使用计数变量一次加载一个淘汰的可观察数组 25 个项目。这个想法是,当您单击一个按钮时,您会在列表中获得另外 25 个项目。听起来很简单,但我对淘汰赛毫无用处。

我尝试调用 $root.getCount 和 $parent.getCount 并将 getCount 作为值放在我的列表视图 div 中,但没有任何作用。我可能想多了。我要做的就是将一个命名变量放入 $getCount 所在的 if 语句中。帮助会很棒。

<div class="list-view" >
    <ul data-bind="foreach: myBigList" class="shop_list">
        <!-- ko if: $index() < $getCount -->
            <li class="list_row">

            </li>
        <!-- /ko -->
    </ul>
</div>

这是我的视图模型

 $(function () {
    var viewModel = {
        count: ko.observable(25),
        getCount: function () {
            return count;
        },
        updateCount: function () {
            count+=count;
        },
    };
    ko.applyBindings(viewModel);
})
4

2 回答 2

2

我不确定我是否理解您真正想要实现的目标,但我假设您已经有一个要以 25 个为一组的项目的大列表。您可以使用可见绑定来实现:

<div class="list-view" >
    <ul data-bind="foreach: myBigList" class="shop_list">
        <li class="list_row" data-bind="visible: $index() < $parent.count()">

        </li>
    </ul>
</div>

由于 count 是一个可观察的,要更新它的值,你需要这样做:

$(function () {
    function ViewModel() {
        this.count = ko.observable(25);
        this.updateCount = function () {
            var newCount = this.count() + 25;
            this.count(newCount);
        };
    }
    ko.applyBindings(new ViewModel());
})
于 2013-06-11T16:49:12.683 回答
0

由于count是一个可观察的,您必须使用函数语法来返回它:return count();. 如果要在每次updateCount调用该方法时将 25 添加到 count 变量,则需要对值进行硬编码。

$(function () {
    var viewModel = {
        count: ko.observable(25),
        getCount: function () {
            return count();
        },
        updateCount: function () {
            count()+=25;
        },
    };
    ko.applyBindings(viewModel);
})
于 2013-06-11T20:02:33.867 回答