2015-08-30 3 views
0

Существует a tutorial for DukeScript, где вам нужно использовать нокаут. Существует enable переплет. Пример:Включить привязку: для чего скобки?

<button data-bind="enable: !rotating(), click: $root.turnAnimationOn">Start</button> 
<button data-bind="enable: rotating, click: $root.turnAnimationOff">Stop</button> 

Так DataModel имеет rotating логическое свойство.

Мои вопросы:

  1. Почему мы используем () после !rotating?

  2. Если я удалю скобки из отрицательной формы, это не сработает. Если я добавлю скобки к утвердительной форме, то она по-прежнему работает. Почему это?

+0

Возможный дубликат [Когда я должен использовать круглые скобки в нокауте] (http://stackoverflow.com/questions/10996185/when-should-i-use-parentheses-in-knockout) – Jeroen

+0

Действительно дубликат, но заголовок из этого я нахожу немного слишком общего, может быть, – user3435407

ответ

1

1) обычно, чтобы читать наблюдаемые мы используем () и мы можем выполнять только операции по unwrapped наблюдаемому содержанию.

Как вы делаете это не ! на наблюдаемом, как это делается NOT на функцию не по ее возвращенному значению. поэтому, если вы хотите это сделать, вы должны: first читать дальше. NOT Оператор на нем

2) Точка 1 отвечает на вашу точку 2 ie! (True) действительна, но! (function() {}) не выглядит как действительный случай здесь.

Простыми словами, если вы готовы выполнять любые операции с наблюдаемыми, всегда следует использовать соглашение ().