我有一个淘汰组件(由 my-template 和 my-viewmodel 组成),比如说Component1。该模板包含另一个组件,比如Component2。
<template id='my-template'>
<span data-bind='text: title'></span> //-->> this works
<div data-bind="component: {name: Component2}">
<span data-bind='text: title'></span1> // -->> this is empty
<div>
</template>
ViewModel:
function my-viewmodel(){
self.title = ko.observable();
$.getJSON(someUrl).then(function(result){
self.title(result);
});
}
对于第一个范围(在Component2之外),标题看起来很好,但对于第二个范围(在Component2内),< strong>标题始终为空。上面的代码有什么问题?任何想法如何修复它以使标题出现在Component2?
我无法想象这是由于AJAX,因为第一个范围中的标题具有值;只有第二个跨度没有得到它。但是注意,如果我删除了$ .getJSON,只需将 title 分配给某个硬编码字符串,并且工作正常 - 两个span都有相同的正确值。
甚至在$ .getJSON完成之前,Component2是否可能被初始化?如果是这样,如何在$ .getJSON完成之前使Component2的初始化延迟?
======================
如果你想知道为什么我在Component2中有跨度:它只是Components2是一棵树,其中的跨度实际上是一些 ul 和 li 组件2用于呈现树的标记。