使用自定义元素的Knockout组件无法像组件绑定一样工作

3
使用knockoutjs;我有一个自定义组件,当作为组件绑定时可以正常工作,但是当作为自定义元素使用时则失败。
请参考这里的fiddler:http://jsfiddle.net/fmgbfthq/4/ 为什么在使用组件绑定时按预期工作,但在使用自定义元素时却不行?它不应该以完全相同的方式工作吗?
<!-- params.loads is coming in as a function -->
<metric params="value: loads()"></metric>

<!-- params.loads is coming in as a value -->
<div data-bind="component: {
        name: 'metric',
        params: {
                value: loads()                   
        }
    }"></div>
1个回答

1
问题在于你不断地使用 ko.observable() 包装你的值, 而 params.value 已经是一个 observable 了。
尝试使用以下代码:
viewModel: function(params) {
    this.value = params.value;
    this.format = params.format;
},

请查看 Fiddle


有道理,但这不能用于“静态”值<metric params="value: 100"></metric>。 - horte
即便如此,为什么自定义元素与组件绑定的处理方式会不同呢? - horte
请参阅http://knockoutjs.com/documentation/component-custom-elements.html#advanced-accessing-raw-parameters以获取说明。 - haim770
关于“静态”值:您不能指望它与非可观察对象一起使用,因为组件永远不会在值更改时得到通知。现在,您正在从组件外部传递一个可观察对象,并使用setInterval执行实际工作(同样是在组件外部)。 - haim770

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接