0

我有几个淘汰模型,我在我的网站上使用。假设对于给定的模型,我有一个属性

function modelA {
    this.doSomething = function () { ... };
}

现在我想在不同的模型中使用 doSomething() 函数。我想这样做,这样我就没有义务在每个需要它的模型中重写 doSomething() 。理想情况下,如果此功能在 ko.applyBindings(new modelX()) 被调用后立即可用,我希望它。

我知道我可以从原型继承函数,但这也会导致每个模型中的重复代码。有没有办法改变 knockout.js 以将此属性注入所有模型对象?

编辑:

如果有一种不同的方法可以实现我的预期目标,我将详细说明该预期目标。我们使用 knockout-validation.js,它允许我对已扩展验证规则的模型中的每个属性调用 isValid()。我想在每个模型上附加一个函数来检查模型中的其他属性,并在它们上调用 isValid() 。这样我就可以编写一个可以用于每个模型的通用验证函数,而无需显式地将其添加到模型中。

4

1 回答 1

1

您可以将自定义函数添加到淘汰赛的核心数据类型。或者,您可以查看扩展程序,并在扩展程序中将函数添加到可观察对象。但是请注意,这两种技术都在“可观察”级别解决横切关注点,而不是在 ViewModel 级别。

我很想知道doSomething在做什么。假设它必须访问 ViewModel 中的一些可观察对象,您应该能够重新构建问题,以便将行为附加到可观察对象。

于 2012-12-27T18:19:42.543 回答