如何在Chrome Packaged App中使用KnockoutJs进行MVVM?它不允许在html中使用内联JS
How to do MVVM using KnockoutJs in Chrome Packaged App? it doesntt allow inline JS in html
现在我正在使用KnockoutJs,我想开发Chrome打包应用程序。我想知道如何绑定数据MVVM。因为在http://developer.chrome.comsaid不能在html中使用内联javascript。JS必须是分开的文件。
那么,我如何编写这个MVVM工作点击?甚至更多的是淘汰赛?
<span data-bind="text : $data.name, click : $root.load> </span>
<span data-bind="text:shoppingCart().somethingChange()"></span>
快速版本
除非你对页面进行沙盒处理并删除某些功能,否则你无法真正使用它。
长版本
Chrome Packaged Apps要求代码和使用的任何库都符合CSP。换句话说,不可能使用eval()
、new Function()
、任何<script></script>
HTML标记和其他一些东西。
Knockout将其中一些用于绑定和模板。因此,您不能将Knockout has用于Chrome Packaged Apps。
此外,我发现一些信息指出,Knockout的开发人员并不打算使其符合CSP。你可以在他们的Git回购中找到这个。
Chrome扩展也存在一些非常相似的问题。我读到的关于这个主题的文章涉及到一个iframe的沙箱。。。经过更多的挖掘,沙箱将导致页面无法使用某些功能。
唯一的选择是使用Knockout的自定义绑定提供程序。然而,我发现在这一点上使用另一个MV*库更具吸引力。
AFAIK此
除非你对页面进行沙盒处理并删除某些内容,否则你无法真正使用它功能。
不再适用。
只要添加:
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
到manifest.json.的根级别
我只是简单地试了一下:<h1 data-bind="text: version().length"></h1>
在default_popup
页面中,并且没有发现任何问题,至少对于Chrome的:48.0.2564.116(64位)版本
看起来您正在尝试绑定文本,而不是一个操作(如"单击"),因此最简单的方法是将计算的可观察对象添加到模型中,计算其函数中所需的值,并将其绑定到跨度。
Knockout的数据绑定在html中不使用内联javascript,html数据绑定属性只定义了一个字符串表达式,该表达式可能包含类似javascript的表达式,Knockout将从其外部脚本文件中解析并执行该表达式。您不应该在敲除MVVM的数据绑定方面遇到任何问题
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 导入jQuery脚本获胜'我不处理html文件
- Don'不允许将焦点集中在自动完成的选择上
- 为什么我在Internet Explorer上看不到html元素
- 从JSON填充列表(而不是HTML)
- 覆盖在赢得'不允许点击下面的标记,谷歌地图api v3
- 淡入不带HTML的背景图像
- js文件未加载js控制台say's”;不允许加载本地资源”;
- ASP表单在服务器上运行,不允许内部HTML按钮onlick setInterval工作
- WinJS 不允许我将事件处理程序附加到动态创建的 HTML 元素
- AJAX 不允许运行 HTML 类单击函数
- 如果我的 aspx 页面不允许来自用户的 html 输入,html 编码如何提供帮助
- 为什么iPhone不允许在html元素的背景中自动播放视频
- 不允许缓存索引.html
- 如何在Chrome Packaged App中使用KnockoutJs进行MVVM?它不允许在html中使用内联JS
- 不允许在输入标记html中键入特定的单词
- 如何验证html文本框不允许特殊字符和空格
- HTML/JS:如果你不允许拥有文件的完整路径,你怎么能上传文件呢?
- ASP.NET'框架javascript不允许我渲染原始HTML IFRAME
- ruby on rails-不允许在文本字段中键入html,可以使用JavaScript或html的任何函数