我正在使用KnockoutJS並通過ajax加載我的視圖模型。在加載完成之前,我想顯示一條「Loading ...」消息,如果沒有加載數據,我想顯示「沒有結果」。信息。我最初的嘗試是這樣的:KnockoutJS - 顯示加載和無數據消息
<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>
我預計第一li
元素只會顯示,如果viewModel.mentions.loaded
是假的,並viewModel.mentions.data
包含一些項目,以及第二li
會顯示,直到viewModel.mentions.loaded
已設置爲false,但是這兩個項目都會一直顯示。我究竟做錯了什麼?
我在使用'''在挖空綁定中遇到了問題,您是否嘗試過== == false? – sellmeadog 2012-07-20 20:04:39
剛剛做過,結果相同。就像knockoutjs在綁定時甚至不觸及現有的'li'元素。 – Chris 2012-07-20 20:05:32
奇數。因爲我有類似的問題,我通常添加一個'status'屬性到我的視圖模型,並將它綁定到UI中的'';實際的消息是在'ko.computable'中確定的。 – sellmeadog 2012-07-20 20:07:26