Knockout Custom Extender不工作

时间:2015-06-28 03:45:47

标签: knockout.js typescript

我搜索并测试过多个例子。我见过的所有示例都在JSFiddler中工作,但是当我将它们放入我的Typescript文件时,没有任何反应。我错过了一些东西,但对于我的生活,我无法弄清楚我错过了什么。

没有任何事情发生,事实上如果我在Chrome的DevTools中的扩展器上放置断点,它们永远不会被击中。

**直接从Knockoutjs.com采取一点修改,我删除了第二个参数并将其硬编码为2 **

Extenders.ts

    ko.extenders.currency = function(target) {
        var result = ko.pureComputed({
            read : target,
            write : function(newValue) {
                var current = target(),
                    roundingMultipler = Math.pow(10, 2),
                    newValueAsNum = isNaN(+newValue) ? 0 : parseFloat(newValue.toString()),
                    valueToWrite = Math.round(newValueAsNum * roundingMultipler) / roundingMultipler;

                if (valueToWrite !== current) {
                    target(valueToWrite);
                }
                else {
                    if (newValue !== current) {
                        target.notifySubscribers(valueToWrite);
                    }
                }
            }
        }).extend({ notify: 'always' });

        result(target());
        return result;
    }

我的ViewModel

    this.productPrice = ko.observable(null)
        .extend({
            currency : true,
            required : { message : 'A Product Price is required.' }
        });

1 个答案:

答案 0 :(得分:1)

在我的ViewModel上调用构造函数之后,我的代码的问题是初始化程序调用(设置我的扩展程序)。

我已经将我的原型,验证,扩展程序和BindingHanders的所有初始化程序移动到一个新的SiteMaster脚本,该脚本始终是页面加载时首先启动的。