强制 Durandal 页面中的 Knockout 组件在绑定之前等待 Ajax 调用
Posted
技术标签:
【中文标题】强制 Durandal 页面中的 Knockout 组件在绑定之前等待 Ajax 调用【英文标题】:Force Knockout component in Durandal page to wait for Ajax call before binding 【发布时间】:2018-03-01 18:32:45 【问题描述】:我正在尝试使用 ajax 调用提供的值将自定义剔除组件的参数绑定到视图模型中。但是,似乎绑定是在 ajax 调用完成之前发生的。无论如何要确保在绑定发生之前完成 ajax 调用?谢谢。
带有自定义组件的视图是这样的
<section>
<mycustomcomponent params="item: item"> </mycustomcomponent>
</section>
这里是视图模型的相关部分
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,
;
);
【问题讨论】:
试试var ajaxCall = return $.ajax.....
,这应该可以防止调用attached
处理程序来同步调用...
【参考方案1】:
您可以尝试将组件包装在 if
绑定中,以便在 item
包含有效内容之前它不会呈现。
<section data-bind="if: item">
<mycustomcomponent params="item: item"> </mycustomcomponent>
</section>
【讨论】:
以上是关于强制 Durandal 页面中的 Knockout 组件在绑定之前等待 Ajax 调用的主要内容,如果未能解决你的问题,请参考以下文章
使用 Durandal 的 compose 时 JQuery 不定位 DOM 元素
React Dynamic Table 未在 Knockout 项目中显示