Webshims lib与durandal updatePolyfill

时间:2013-05-21 00:49:49

标签: knockout.js durandal polyfills webshim

我正在尝试在基于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时获取一个钩子。其他人试图这样做?指针?方向?欢迎提出任何建议。

2 个答案:

答案 0 :(得分:0)

您可能想尝试Durandal的viewAttached直播周期事件(http://durandaljs.com/documentation/Hooking-Lifecycle-Callbacks/)。在它触发view时,它附加到父元素,但不一定是DOM。这可能或可能足以让updatePolyfill()起作用。

viewAttached: function (view){
    $(view).updatePolyfill();
}

答案 1 :(得分:0)

请注意: 如果您使用的父视图具有“向导”样式的子视图,您可以在其中动态更改父视图中的内容Step1 Step2 Step3 ...这将无效,因为viewAttached()仅在父视图上触发一次...并且很遗憾,在创建DOM之前运行子视图上的viewAttached()(放入中断)你可以在物理上看到子视图上没有DOMAttached()

这有点问题:(

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