javascript - 如何在Chrome打包应用程序中使用Knockout Js进行MVVM?它不允许在 html 中使用内联 JS

标签 javascript google-chrome knockout.js google-chrome-extension google-chrome-app

现在我正在使用KnockoutJs,我想开发Chrome打包应用程序。 我想知道如何绑定(bind)数据 MVVM。因为在http://developer.chrome.com说不能在html中使用内联javascript。 JS必须是分隔文件。

那么我该如何编写这个 MVVM 来实现点击呢?甚至更多 knockout ?

<span data-bind="text : $data.name, click : $root.load> </span>
<span data-bind="text:shoppingCart().somethingChange()"></span>

最佳答案

快速版本

除非您对页面进行沙箱处理并删除某些功能,否则您无法真正使用它。


长版

Chrome 打包应用程序要求使用的代码和任何库为 CSP compliant 。也就是说,不可能使用eval() , new Function() , 任何 <script></script> HTML 标签和其他一些东西。

Knockout 将其中一些用于绑定(bind)和模板。因此,您不能将 Knockout 用于 Chrome 打包应用程序。

此外,我发现一些信息表明 Knockout 的开发人员并不打算使其符合 CSP 标准。你可以在他们的Git repo上找到这个.

Chrome 扩展程序也存在一些非常类似的问题。我读到的有关该主题的内容涉及对 iframe 进行沙箱处理...再了解一下 digging ,沙盒会导致页面无法使用某些功能。

唯一的选择是使用 Knockout 的自定义绑定(bind)提供程序。然而,我发现此时使用另一个 MV* 库更具吸引力。

关于javascript - 如何在Chrome打包应用程序中使用Knockout Js进行MVVM?它不允许在 html 中使用内联 JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18238812/

相关文章:

python - 如何使用 selenium webdriver 和 python 关闭 chrome 浏览器弹出对话框

knockout.js - Knockout 是否支持样式的双向绑定(bind)?

javascript - 如何添加一个计数器来显示找到了多少文本匹配项

javascript - 使用 JavaScript 将光标置于 Chrome 文本输入元素中

Chrome 中的 JQuery 窗口宽度不正确

javascript - 按父级 knockout HTML 表格组

javascript - 如何拼接ko.compateds

javascript - 使用 $.getJson() 函数的空响应

javascript - 从 Angular 中的服务获取唯一数组

javascript - Django:在 Google map 的 javascript 中使用模板标签