【问题标题】:if data empty, show error with knockout如果数据为空,则显示剔除错误
【发布时间】:2018-01-02 17:48:24
【问题描述】:

我对 knockout.js 还是很陌生

我正在我的 mvc 视图中显示来自数据库的一些数据。目前,由于数据始终存在,它工作正常。但是我想编写一个代码,如果数据为空(例如,没有购买的书籍)会显示错误/警告,并且我可以提供一个链接以购买带有此错误的新书。

这就是我现在显示数据的方式

var purchasedBooks = @Html.Raw(Json.Encode(Model.Data));
            ko.applyBindings(new BookViewModel(purchasedBooks == null ? //doSomething : purchasedBooks));

有什么帮助吗?我想在 div 中显示错误,并提供购买新书的链接。但如果没有书,只想显示这个 div。

<div class="book-p" data-bind="">
    <a href="#">Purchase new book!</a>
</div>

【问题讨论】:

  • 您可以使用 if 绑定:knockoutjs.com/documentation/if-binding.html
  • 不知何故不适用于我实现事物的方式@Robert
  • 是的,我想是的...我认为您应该使用 Razor 并使用 MVC 方式,使用 AJAX 和 Knockout.js。老实说,你目前的结构有点……丑陋。
  • 购买的图书是数组吗?请使用您的 ko 模型 (BookViewModel) 和购买的图书的外观更新问题。用淘汰赛做这件事很简单,只需要这个信息来帮助。

标签: javascript model-view-controller knockout.js


【解决方案1】:

这里有一些简单的淘汰赛,它维护项目计数,并根据计数显示不同的消息0 或大于0。运行下面的 sn -p 来测试这个解决方案。

var viewModel = {  
  bookCount: ko.observable(0),
  addBook: function() {
    this.bookCount(this.bookCount() + 1)
  },
  removeBook: function() {
    if(this.bookCount() > 0)
      this.bookCount(this.bookCount() - 1)
  },
};

ko.applyBindings(viewModel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js">
</script>

<h2>Books:</h2>

<div data-bind="if: bookCount() > 0">
  <span data-bind="text: 'books in basket: ' + bookCount()"></span>
</div>

<div data-bind="if: bookCount() === 0">
  <span>no books in basket</span><br />
  <a href="#">Go here to buy some books</a>
</div>

<input type="button" value="add" 
       data-bind="click: addBook" />
<input type="button" value="remove" 
       data-bind="click: removeBook, visible: bookCount() > 0" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 2018-03-30
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多