Подтвердить что ты не робот

Когда следует использовать круглые скобки в нокауте

Я новичок в Knockout, и я должен сказать, что часто меня путают, когда следует использовать (). Есть ли общий совет/трюк, касающийся того, когда вы будете использовать () против, когда вы этого не сделаете, потому что на данный момент я просто делаю проб и ошибок. Если привязка выдает ошибку или не обновляет значения, я удаляю () else, который я помещаю.

4b9b3361

Ответ 1

Вы используете () в нокауте при использовании наблюдаемых или при выполнении любого другого метода. Нокаут-наблюдаемые - это функции, вызываемые, чтобы вернуть вам то, что вы ищете, или позволить вам назначать новые значения.

В нокауте вы используете object.property() для получения значения и object.property(newValue), чтобы присвоить значение этому свойству.

На нокауте веб-сайт проверьте документацию, в частности раздел наблюдаемых, в котором показано использование () при запросе и записи наблюдаемых данных.

Цитата:

var myViewModel = {
    personName: ko.observable('Bob'),
    personAge: ko.observable(123)
};
  • Чтобы прочитать текущее значение наблюдаемых, просто вызовите наблюдаемое без параметров. В этом примере myViewModel.personName() будет return 'Bob', а myViewModel.personAge() вернет 123.

  • Чтобы записать новое значение наблюдаемому, вызовите наблюдаемое и передайте новое значение в качестве параметра. Например, вызов myViewModel.personName( "Mary" ) изменит значение имени на "Mary".

  • Чтобы записать значения в несколько наблюдаемых свойств объекта модели, вы можете использовать синтаксис цепочки. Например, myViewModel.personName('Mary'). personAge (50) изменит имя значение "Мэри" и возрастное значение до 50.

Нокаут интерактивный учебник также очень хорош и хорошо стоит.

Ответ 2

Мне кажется, что существующие ответы пропускают очень важную точку смущения: data-bind attributes.

Верно, что вы используете parens, когда находитесь в Javascript, и получаете или устанавливаете наблюдаемые. Но когда вы пишете data-bind="text: property", вы оставляете парны даже при работе с наблюдаемыми.

Изменить

Как отмечено в комментарии ниже, привязки, являющиеся выражениями или доступными свойствам наблюдаемых объектов, требуют parens

visible: personName().length > 0
visible: person().Name().length > 0
visible: person().isVisible

Обратите внимание, что последний person и isVisisble являются обоими наблюдаемыми, но последнее свойство не использует parens! Причиной этого является то, что мы будем передавать значение привязке вместо наблюдаемого, и оно не будет обновляться.

Ответ 3

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

var something = ko.obserbable();
something(5); //set value
console.log(something()); //get value: 5

Причина в том, что большинство реализаций JS не поддерживают геттеры и сеттеры для свойств, поэтому наблюдаемые были реализованы таким образом, чтобы обойти это ограничение.