2017-07-27 8 views
0

とデータエンプティ、ショーのエラーであれば、私は私のMVCのビューでデータベースからいくつかのデータを表示していますノックアウト

をknockout.jsするためにかなりの新たなんです。今のところ、データは常にそこにあるので、うまく動作します。しかし、データが空であれば(たとえば購入した書籍はない)、このエラーが発生した新しい本を購入するためのリンクを提供することができる場合、エラー/警告を発するコードを書いてください。

は、これは私が今

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

何とかdoesntの仕事@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