在Durandal页面中强制Knockout组件在绑定之前等待Ajax调用

时间:2017-09-20 15:42:38

标签: ajax knockout.js durandal

我正在尝试使用ajax调用提供的值将自定义挖空组件的参数绑定到viewmodel中。但是,似乎绑定发生在ajax调用完成之前。无论如何确保在绑定发生之前完成ajax调用?感谢。

自定义组件的视图是这样的

<section>
    <mycustomcomponent params="item: item"> </mycustomcomponent>
</section>

以下是viewmodel的相关部分

define(function (require) {
    var Item = require('models/item');

    var item;

    return {
        activate: function () {
            var ajaxCall = $.ajax({
                method: 'get',
                url: 'myapicall',
                success: function (data) {
                    item = new Item(data);
                }
            });
            return ajaxCall;
        },


        item: item,
    };
});

1 个答案:

答案 0 :(得分:0)

您可以尝试将组件包装在if绑定中,以便在item包含有效内容之前不会呈现该组件。

<section data-bind="if: item">
    <mycustomcomponent params="item: item"> </mycustomcomponent>
</section>