定义自定义绑定处理程序
实际上非常简单,只需在定义自定义绑定处理程序之前将其 (myBindingHandler) 添加到KnockoutBindingHandlers 接口。 请注意,您必须在 1.0 版(或更早版本)的 .d.ts 文件中对界面进行此添加。
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 中添加自定义绑定处理程序的文档是 here
使用 fn 通过 TypeScript 添加自定义函数
同样,要向ko.observable.fn 添加一些内容,您可以在 typescript 中执行此操作
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
在 knockoutjs 中添加到 fn 的文档是 here