如何在Chrome Packaged App中使用KnockoutJs做MVVM?它不允许在HTML中使用内联JS

ris*_*res 2 javascript google-chrome google-chrome-extension knockout.js google-chrome-app

现在我正在使用KnockoutJs,我想开发Chrome Packeaged App.我想知道如何绑定数据MVVM.因为在http://developer.chrome.com上说不能在html中使用内联javascript.JS必须是分开的文件.

那么我如何编写这个MVVM适用于点击?或者甚至更多的淘汰赛?

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

Ale*_*rty 5

快速版

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


长版

Chrome Packaged Apps要求所使用的代码和任何库都符合CSP标准.换句话说,这是不可能使用eval(),new Function()任何<script></script>HTML标记和一些其他的东西.

Knockout使用其中一些用于绑定和模板.因此,您无法使用Knockout用于Chrome Packaged Apps.

此外,我发现一些信息指出Knockout的开发人员并不打算使其符合CSP标准.你可以在他们的Git回购中找到这个.

Chrome扩展程序存在一些非常类似的问题.我在这个主题上看到的内容涉及沙箱iframe ...经过一些挖掘后,沙盒将导致页面无法使用某些功能.

唯一的选择是为Knockout使用自定义绑定提供程序.然而,我发现在那时使用另一个MV*库更具吸引力.