Javascript 当传递给组件时,Observable中的Knockout Observable将被重新包装

Javascript 当传递给组件时,Observable中的Knockout Observable将被重新包装,javascript,knockout.js,Javascript,Knockout.js,如果将包含在可观察对象中的可观察属性传递给自定义组件,则它似乎被重新包装在新的可观察对象中。当您在可观察类验证上有一个扩展时,这会导致一个问题 演示: 这是KnockoutJS中的一个bug还是预期的行为?我很高兴你问这个问题,因为我一直想研究组件。这似乎是预期的行为-。我还没有将此作为一个答案发布,因为它对我来说是新的,希望对它更精通的人能够解释更多,但它似乎确实解释了您看到的行为。我认为您是对的,它正在将子属性处理为一个可观察表达式并将其包装在一个计算表达式中。如果我把它放在一个盒子里,它就

如果将包含在可观察对象中的可观察属性传递给自定义组件,则它似乎被重新包装在新的可观察对象中。当您在可观察类验证上有一个扩展时,这会导致一个问题

演示:


这是KnockoutJS中的一个bug还是预期的行为?

我很高兴你问这个问题,因为我一直想研究组件。这似乎是预期的行为-。我还没有将此作为一个答案发布,因为它对我来说是新的,希望对它更精通的人能够解释更多,但它似乎确实解释了您看到的行为。我认为您是对的,它正在将子属性处理为一个可观察表达式并将其包装在一个计算表达式中。如果我把它放在一个盒子里,它就可以工作了。不是很直观,但我想我能理解。。。谢谢这是出于设计,另请参见如何将参数传递到组件部分中的
<div id='main'>
    <foo-check params="value: fooVal"></foo-check> <!-- works -->
    <foo-check params="value: outerVal.fooVal"></foo-check> <!-- works -->
    <foo-check params="value: outerObsrvVal().fooVal"></foo-check> <!-- doesn't work, fooVal gets re-wrapped in new observable -->
</div>