我正在尝试在基于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时获取一个钩子。其他人试图这样做?指针?方向?欢迎提出任何建议。
答案 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运行的元素并在该绑定中运行它,但仍然是一个问题。