Knockout组件:由于anync ajax,绑定到组件的模型数据为空

时间:2015-09-22 19:47:45

标签: javascript ajax asynchronous knockout.js

我有一个淘汰组件(由 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用于呈现树的标记。

0 个答案:

没有答案