gpt4 book ai didi

knockout.js - knockout typescript 扩展

转载 作者:搜寻专家 更新时间:2023-10-30 20:56:43 24 4
gpt4 key购买 nike

谁能发布一个在 typescript 中扩展 observable in knockout 的示例? knockout 扩展器:http://knockoutjs.com/documentation/extenders.html

我从 2013 年 3 月 6 日开始使用这个版本的 knockout.d.ts https://github.com/borisyankov/DefinitelyTyped/tree/master/knockout

编辑:非常感谢你!因此,要扩展你“只”需要添加接口(interface) KnockoutExtenders 以便 typescript 将“允许”它。示例

interface KnockoutExtenders {
logChange(target: any, option: string): KnockoutObservableAny;
}

ko.extenders.logChange = function (target, option) {
target.subscribe(function (newValue) {
console.log(option + ": " + newValue);
});
return target;
};

在 View 模型中声明如下:

this.score = ko.observable(score).extend({ logChange: "score" });

最佳答案

typescript 中的接口(interface)是开放式的,所以你可以在多个地方添加它们。

例如数字。您需要将此成员应用到扩展程序以及您的可观察对象。这是示例:

interface KnockoutExtenders {
numeric(target: any, precision: number): KnockoutObservableAny;
}
interface KnockoutObservableNumber {
extend(data: any): KnockoutObservableNumber;
}
ko.extenders.numeric = function (target: KnockoutObservableNumber, digits) {
var result = ko.computed({
read: function () {
var value = target();
var toret: string = value.toString();
if (toret.length < digits) {
toret = "0" + toret;
}
else if (toret.length > digits) {
toret = toret.substring(0, digits);
}
return toret;
},
write: target
});

result(target());
return result;
};

您可以在此处查看完整示例:https://github.com/basarat/ChessClock/blob/d82a565ac9720cce00c75f099fcf7003f496755a/ChessClock/ChessClock/www/main.ts

关于knockout.js - knockout typescript 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15357750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com