0

我正在尝试在基于 durandal 的 SPA 中使用 Webshims lib。遵循 WebShims lib 网站上的说明,包括自定义 modernizr、jquery 和 polyfill。只要控件不是通过视图中的剔除或 durandal 过渡动态加载,所有工作都很好。

浏览 Webshims 的网站,它提到了这样的事情

如果使用插件、脚本或框架,它使用“普通”JS/jQuery 操作方法而不是相应的 webshims 增强操作方法来生成新的 HTML5 内容(即:.html() 而不是 .htmlPolyfill()),则方法 .updatePolyfill() 可用于填充动态内容:

 $('#my-dynamic-container').load('ajax/test.html', function(){
     $(this).updatePolyfill();
 });

我正在努力寻找做到这一点的最佳地点。我显然不想碰 durandal 的模块。要么我扩展一个,要么在加载 html 时获取一个钩子。还有其他人尝试这样做吗?指针?方向?欢迎任何建议。

4

2 回答 2

0

请注意:如果您使用的父视图具有“向导”样式的子视图,您可以在其中动态更改父视图的内容 Step1 Step2 Step3 ...这将不起作用,因为 viewAttached() 仅在父视图上触发一次......不幸的是,子视图上的 viewAttached() 在创建 DOM 之前运行(插入中断),您可以实际看到子 viewAttached() 上没有 DOM

这有点问题:(

我可以使用的唯一解决方法是自定义 KO 绑定到我需要自定义 javascript 在该绑定中运行和运行它的元素,但这仍然是一个问题。

于 2013-05-26T07:26:38.003 回答
0

您可能想尝试一下 Durandal 的viewAttached实时循环事件 ( http://durandaljs.com/documentation/Hooking-Lifecycle-Callbacks/ )。在触发点view附加到父元素,但不一定附加到 DOM。这可能或可能足以updatePolyfill()工作。

viewAttached: function (view){
    $(view).updatePolyfill();
}
于 2013-05-21T08:01:39.293 回答