Knockoutjs - привязки с параметрами, запускаемыми при загрузке - программирование
Подтвердить что ты не робот

Knockoutjs - привязки с параметрами, запускаемыми при загрузке

В последнее время я делал много нокаутов, и я встретил странное происхождение.

Как вы можете видеть в этом скрипте http://jsfiddle.net/hqXjv/ при настройке привязки к click: testMethod, тогда действие срабатывает при нажатии кнопки.

Как вы можете видеть в этой скрипте http://jsfiddle.net/kxTzM/ при настройке привязки к click: testMethod('hi') действие срабатывает как при нажатии кнопки, так и при загрузке страницы ( Я предполагаю применить applyBindings)

Если для изменения проблемы не требуется параметр, если вы изменили привязку к click: testMethod() в первой скрипке, вы увидите, что она запускается при загрузке страницы.

Хотя, да, я мог бы добавить еще один атрибут элемента и попытаться использовать его в качестве параметра, мой вопрос в том, есть ли способ передать параметры привязки knockoutjs, не запуская их при загрузке. Если это ошибка, пусть будет так, но я просто хочу знать, как это избежать.

4b9b3361

Ответ 1

Я думаю, что "Примечание 2" на этой странице с нокаутом объясняет все это:

http://knockoutjs.com/documentation/click-binding.html

Вы можете избежать проблемы, используя:

Анонимные функции:

<button data-bind="click: function(data, event) { myFunction(data, event, 'param1', 'param2') }">Click me</button>

... или...

Метод привязки:

<button data-bind="click: myFunction.bind($data, 'param1', 'param2')">Click me</button>

Ответ 2

После выполнения функции щелчка при загрузке

click: clickSpan()

снятие скобок, как показано ниже, функция не была выполнена onload

click: clickSpan

(это объясняется в примечании 2 выше, но оно было в загадочной форме: -)

Ответ 3

Я столкнулся с этим при следующих обстоятельствах:

  • Я запускал Visual Studio 2013.
  • Мой проект с нокаутом использовал TypeScript 1.5.
  • Я выполнял свой проект в chrome с помощью отладчика Visual Studio.
  • Я плохо отредактировал какой-то код и забыл перекомпилировать или повторно запустить отладчик.

Из-за этого я считаю, что случилось, что у меня был плохой TypeScript, который бы не компилировался, только я не получал никаких предупреждений или ошибок, и изменения, которые я сделал для моего TypeScript, не были правильное отражение в файлах JavaScript, созданных автоматически.

Это может быть необычно, что другие это увидят, но, я думаю, слово предупреждения состоит в том, что вы можете столкнуться с этим или другим неожиданным поведением, если вы редактируете TypeScript на месте во время работы отладчика VS. Я подозреваю, что создал ситуацию, которую Марк Робинсон описал в моих автогенерированных файлах js, но я не видел этого в TypeScript.