将值转换器保持在视图模型之外

时间:2015-11-27 16:09:48

标签: knockout.js

在KO文档中,有一个使用计算的observables 的值转换器示例: http://knockoutjs.com/documentation/computed-writable.html#example-3-a-value-converter

但是,我想要一种方法,其中值转换器位于视图模型之外,就像IValueConverter在Windows中的工作方式一样,视图模型无法以任何方式了解转换器。

我正在考虑一个可以让我写下这样的内容的功能:

data-bind="converter : { source: myBindingObject, converter: app.myConverter }"

和转换器是一个具有读/写功能的对象:

app.myConverter = {
    convert: function (value, parameter) {

    },
    convertFrom: function (value, parameter) {

    }
};

也许有一种方法我已经不知道了。

例如,我所描述的声音类似于KO扩展器,但它要求视图模型代码中的属性使用.extend(extender),就像我说的那样,它不是我想要的< / p>

1 个答案:

答案 0 :(得分:1)

Woa,退了一下。你问一个非常广泛的问题,很难看到实际的应用/我们在哪里错过了实际的背景。你确定这不是XY-problem吗?也许你正在寻找经典或原型继承来干掉你的视图模型,当你这样做时,不再需要从视图模型中获取它。

换句话说:让我们知道为什么你需要这个,并给我们一个实际的问题/方案/ repro。这将使我们更容易帮助您。

在任何情况下,我所知道的只有一个相关的默认Knockout构造可以回答您提出的直接问题:custom bindings。它们也相当于读写,但后来针对DOM操作(将视图模型读入DOM,反之亦然)。它们对您的视图模型不显眼,而是在DOM中指定。