Определение пользовательского обработчика привязки
На самом деле это довольно просто, просто добавьте его (myBindingHandler
) в интерфейс KnockoutBindingHandlers
прямо перед тем, как определить собственный обработчик привязки. Обратите внимание, что вам необходимо внести это дополнение в интерфейс в файле .d.ts
версии 1.0 (или, возможно, более ранней).
bindingHandlers.d.ts
/// <reference path="typings/knockout/knockout.d.ts" />
interface KnockoutBindingHandlers {
myBindingHandler: KnockoutBindingHandler;
}
myBindingHandler.ts
/// <reference path="bindingHandler.d.ts" />
ko.bindingHandlers.myBindingHandler = {...}
Теперь все работает. Это не перезапишет какие-либо существующие определения или объявления, поэтому ваше определение будет стоять рядом с ko.bindingHandlers.text
и т. д.
Просто будьте осторожны, потому что, если вы не включите реальное определение myBindingHandler
и сошлетесь на него в другом месте, оно скомпилируется из-за определения, которое вы добавили в KnockoutBindingHandlers
, но сломается во время выполнения, потому что нет реализации myBindingHandler
.
Документация по добавлению пользовательских обработчиков привязки в Knockoutjs находится здесь.
Использование fn для добавления пользовательских функций с помощью TypeScript
Точно так же, чтобы добавить что-то к ko.observable.fn
, вы должны сделать это в машинописном тексте.
interface KnockoutObservableFunctions {
myFnExtension(args: any): returnType;
}
и назовите его с
// x will be defined as a returnType automatically, but you could specify it if you like, either way
var x: returnType = ko.observable("value").myFnExtension(args);
Примечание. Существуют разные интерфейсы для типов subscribable
, observable
, observableArray
и computed
:
ko.subscribable.fn
... добавить к KnockoutSubscribableFunctions
ko.observable.fn
... добавить к KnockoutObservableFunctions
ko.observableArray.fn
... добавить к KnockoutObservableArrayFunctions
ko.computed.fn
... добавить к KnockoutComputedFunctions
Документация по добавлению fn в Knockoutjs находится здесь
person
Allen Rice
schedule
24.04.2013