KnockoutJSを使用しており、ajaxを介してビューモデルを読み込んでいます。ロードが完了する前に、「Loading ...」というメッセージを表示したいのですが、データがロードされていない場合は、「Noresults」を表示したいと思います。メッセージ。私の最初の試みは次のようになります。
<ul data-bind="template: { name: 'mentions-template', foreach: mentions.data }">
<li data-bind="visible: mentions.loaded() && mentions.data().length < 1">No mentions</li>
<li data-bind="visible: !mentions.loaded()">Loading...</li>
</ul>
<script type="text/javascript">
var viewModel = {
mentions: {
loaded: ko.observable(false),
data: ko.observableArray()
}
}
function loadData() {
$.post(action, function(result) {
viewModel.mentions.data = ko.mapping.fromJS(result);
viewModel.mentions.loaded(true);
ko.applyBindings(viewModel);
});
}
ko.applyBindings(viewModel);
loadData();
</script>
最初の要素はfalseでいくつかの項目が含まれているli
場合にのみ表示され、2番目の要素はfalseに設定されるまで表示されると予想しましたが、両方の項目が常に表示されます。私は何が間違っているのですか?viewModel.mentions.loaded
viewModel.mentions.data
li
viewModel.mentions.loaded