2017-07-27 25 views
0

我相當多的新節目錯誤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> 
+0

可以使用*如果*綁定:http://knockoutjs.com/documentation/if-binding.html – Robert

+0

與我採取事物的方式不知何故不工作@Robert – aiden87

+1

是的,我想是的......我認爲你應該選擇使用Razor並使用MVC方式,或者使用AJAX和Knockout.js。你目前的建設有點醜陋,說實話。 – Robert

回答

1

下面是一些簡單的基因敲除維護項目的數量,並顯示取決於它的不同消息計數0或大於0更大。運行下面的代碼片段來測試這個解決方案。

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" />

+0

非常感謝! – aiden87