【问题标题】:Webshims lib with durandal updatePolyfill带有 durandal updatePolyfill 的 Webshims lib
【发布时间】:2013-05-15 15:46:09
【问题描述】:

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

【问题讨论】:

    标签: knockout.js durandal polyfills webshim


    【解决方案1】:

    您可能想尝试一下 Durandal 的 viewAttached 实时循环活动 (http://durandaljs.com/documentation/Hooking-Lifecycle-Callbacks/)。在它触发时,view 已附加到父元素,但不一定附加到 DOM。这对于updatePolyfill() 的工作可能或可能就足够了。

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

    【讨论】:

    • 如果我理解正确,这将来自 shell.js 对吗?
    • 恐怕你必须在 Durandal 组合 durandaljs.com/documentation/Composition 中使用的每个模型中设置这个。如果您现在唯一使用的是 shell.js,那么可以。
    • 其实我已经把它添加到main.js中的viewModelBinder.afterBind了。它似乎工作正常。我能看到的唯一问题是绑定需要很长时间。
    【解决方案2】:

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

    这有点问题:(

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

    【讨论】:

      猜你喜欢
      • 2012-12-18
      • 2013-06-06
      • 1970-01-01
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多