【问题标题】:want to show only 2 names at a time from list and click on button next 2 names comes but there is a bug [duplicate]只想从列表中一次显示 2 个名称,然后单击按钮下一个 2 个名称出现,但有一个错误 [重复]
【发布时间】:2014-07-23 15:13:25
【问题描述】:

我只想显示数组中存在的前 2 个东西,而不是全部,然后通过单击按钮,下一个 2 个名称出现到最后一个,但我正在尝试的代码不起作用。我正在提供代码,请告诉错误。你能帮我纠正一下knoctout js的代码吗?

在 Javascript 中

function viewModel()
    {
        this.displayCount = ko.observable(2);
        this.readMore = function () 
        {
             this.displayCount(this.displayCount() + 2);
        };

        this.WhoElseAttends = ko.observableArray([]);
        for (var i = 0; i < WhoElseAttends().length; i++)
        {
            this.WhoElseAttends.push({ data-bind="text:FirstName", data-bind="text:LastName", data-bind="text:Company" });
        }   
    }
  ko.applyBindings(new viewModel());

在 HTML 中

<div class="slide">
    <button type="button" data-bind="click: readMore, visible: displayCount() < WhoElseAttends().length">Read More</button>
        <ul data-bind="foreach: WhoElseAttends.slice(0, displayCount())">
            <li>
                <span data-bind="text:FirstName"></span>
                <span data-bind="text:LastName"></span>,
                <span data-bind="text:Company"></span>
          </li>
      </ul>                  
   <span data-bind="if: WhoElseAttends.length <0">No Attendees</span>                    
</div>

【问题讨论】:

  • 请做个小提琴什么的。
  • 这里的数据来自服务器,但我不认为小提琴会这样做
  • 我猜一些json测试数据可以吗?
  • 你能帮帮我吗?我会感谢你的
  • @user3756425:正在处理它...

标签: html css knockout.js


【解决方案1】:

您的 javascript 工作方式存在一些问题。要将新项目添加到 observableArray,它需要是一个有效的 Javascript 对象。

this.WhoElseAttends.push({ data-bind="text:FirstName", data-bind="text:LastName", data-bind="text:Company" });

无效。它需要更改为类似

 this.WhoElseAttends.push({
            FirstName: 'First Name',
            LastName: 'Last Name' ,
            Company: 'My Company'
        });

使用this 时也要非常小心,因为它可能会根据上下文而改变。 javascript 中的约定之一是立即将this 分配给变量。像

var ViewModel = function(){
    var self = this;
    self.someProperty = ko.observable();

};

我认为这基本上是你所追求的

http://jsfiddle.net/M3dgk/2/

寻呼:http://jsfiddle.net/M3dgk/3/

【讨论】:

  • hmm 实际上服务器中有名称假设有 10000 个名称,并且当页面加载时假设看到 100 个名称并且有一个按钮,通过单击该按钮下一个 100 出现意味着从 101-200 到 10000。此代码是否适用于此代码?
  • 听起来你正在尝试进行分页。这段代码所做的只是显示显示计数中指定的记录数。因此,要使其成为下 100 条记录,请将 2 更改为 100。但它不会隐藏前 100 条。
  • 你能做到隐藏吗
  • 看看更新的小提琴 - jsfiddle.net/M3dgk/3
猜你喜欢
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-05
  • 2013-02-17
相关资源
最近更新 更多