2014-01-28 6 views
2

Я пытаюсь использовать привязку видимых данных с отрицанием и, похоже, не работает. Я нашел несколько вопросов в stackoverflow, которые указывают, что привязка NOT должна использоваться как выражение. Но в моем случае я просто использую свойство length, поэтому я не уверен, как использовать выражение. Вот мой примерНокаут js - видимое связывание с отрицанием не работает

<div class="form-group" data-bind="visible:!users.length == 0"> 
<span>Some message here...</span 
</div> 

<div class="form-group" data-bind="visible:users.length > 0"> 
<span>User data grid here...</span 
</div> 
+0

Является ли ваше свойство 'users' наблюдаемым массивом? – Josh

ответ

4

Я предполагаю, что users является observableArray, и поэтому вы должны делать это:

data-bind="visible:users().length !== 0" 

Еще лучше и более четкое намерение было бы создать вычисляемое свойство на вашем вид модели и привязки к тому, что вместо того, чтобы:

showUsers = ko.computed(function(){ 

    return _this.users().length > 0; 

}); 

Тогда ваши переплеты стали:

data-bind="visible:showUsers" 

Или

data-bind="visible:!showUsers()" 

Вот jsFiddle showing a full example с использованием различных методов.

+0

+1 Для показа вычисленной альтернативы вы видите слишком много встроенного JavaScript в привязках KO в эти дни – Anders

+0

Thanks Josh. Я пытался использовать выражение непосредственно в привязке данных. Похоже, это невозможно. Я буду использовать этот подход. – Gowtham

Смежные вопросы