【问题标题】:How do I create an array based on an observable如何基于可观察对象创建数组
【发布时间】:2014-01-09 16:12:11
【问题描述】:

这是earlier question 的后续行动。

我有 1 个从 JSON 对象映射的可观察属性 (pageNumber),其结构如下:requestData.settings.pageNumber

我想使用 Knockout 创建一个寻呼机,如下代码所示:

<ul class="pagination">

    <!-- ko foreach: Paging() -->
        <li data-bind="click: function () { $root.changePage($data) }" class="active">
            <a href="#" data-bind="text: $data"></a>
        </li>
    <!-- /ko -->

</ul>

分页现在是一个数组,在我的代码中不会更新。请帮我找出我在这里做错了什么。

【问题讨论】:

  • 假设 Paging 是一个 observableArray:你试过在你的 foreach 中删除 () 吗?
  • 我为什么要这样做?我想要实现的东西(伪):array = new range(page-5, page+5);如果 pagenumber observable 发生变化......数组应该改变。
  • 请在问题中也包含您相关的 ViewModel 逻辑,尝试创建一个repro(甚至可能在工作的fiddle 中包含相同的代码)。这将使您的问题更加清晰,并使我们更容易为您提供帮助。

标签: knockout.js


【解决方案1】:

您可以尝试使用类似计算:

var ViewModel = function() {
    this.currentPage = ko.observable(6);

    this.paging = ko.computed(function() {
        var currentPage = this.currentPage();

        return range(currentPage-5, currentPage+5,1);
    }, this);
};

fiddle 不多了

range 代码取自 answer

【讨论】:

    猜你喜欢
    • 2019-05-22
    • 1970-01-01
    • 2016-10-06
    • 2014-08-05
    • 1970-01-01
    • 2019-09-09
    • 2018-12-16
    • 2017-07-13
    相关资源
    最近更新 更多