javascript-用Knockout.js控制Flash插件,导致jQuery.tmpl和Knockout-Sortable冲突
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-用Knockout.js控制Flash插件,导致jQuery.tmpl和Knockout-Sortable冲突,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2448字,纯文字阅读大概需要4分钟。
内容图文
![javascript-用Knockout.js控制Flash插件,导致jQuery.tmpl和Knockout-Sortable冲突](/upload/InfoBanner/zyjiaocheng/693/5d51863f81fa4a2db5b53c627b12d73b.jpg)
我正在尝试使用Knockout.js的本机模板功能来呈现HTML以嵌入Flash对象. jQuery.tmpl可以很好地完成这项工作,但是由于与Knockout-sortable插件发生冲突,我无法使用它.
这是一个带有本地模板怪异的Flash插件示例:http://jsfiddle.net/7y3ub/35/
在Chrome中,播放器永远不会显示.在Firefox中,如果您在选中复选框的情况下更改频道,则会显示播放器.但是,重新选中该框会使播放器再次消失.
由于在页面持续时间内可能会有许多Flash插件加载和卸载的事实,因此必须使用’if’绑定.
据我所知,当对象/嵌入标签进入可见DOM时,HTML必须全部就位.这就是为什么jQuery.tmpl在我的情况下会很棒.我已经尝试过自己形成HTML字符串,但是我不知道如何应用和维护新标记所包含的绑定.
最重要的是,我要么需要一种在仍支持绑定的同时立即呈现HTML的方法,要么需要找到一种使jQuery.tmpl和Knockout-sortable彼此兼容的方法.
这是不兼容的示例:http://jsfiddle.net/7y3ub/41/
如果您仅取消引用jQuery.tmpl,则该示例中的代码将完美运行. http://jsfiddle.net/7y3ub/42/
控制台中的错误消息似乎暗示上下文未正确调整,或者隐含的foreach没有执行.在此调整中,消息变得更加不寻常,其中SubItem对象被简单的字符串替换:http://jsfiddle.net/7y3ub/43/
解决方法:
我不确定jQuery Tmpl不兼容.我将不得不进一步研究.但是,如果您不需要为此目的而使用jQuery Tmpl,那就太好了.
看起来某些浏览器(尤其是Chrome)在动态设置embed元素上的src时遇到问题.这是一个问题:http://code.google.com/p/chromium/issues/detail?id=69648.这是一个类似的问题:Dynamically change embedded video src in IE/Chrome (works in Firefox)
因此,要使其工作,我们必须避免在元素上使用attr绑定,因为它将导致此问题.
无需依靠其他模板引擎即可完成此工作的简单方法是在object元素上使用html绑定.就像:
<p data-bind="if: StreamEnabled">
<object width="320" height="240" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" data-bind="html: Template">
</object>
</p>?
使用JavaScript,例如:
var ViewModel = function() {
this.StreamEnabled = ko.observable(false);
this.Channel = ko.observable("saltwatercams");
this.Template = ko.computed(function() {
return "<param name=\"movie\" value=\"" + this.Channel() + "\"></param><embed width=\"320\" height=\"240\" type=\"application/x-shockwave-flash\" src=\"http://cdn.livestream.com/grid/LSPlayer.swf?channel=" + this.Channel() + "\"></embed>";
}, this);
};
不幸的是,我们需要在视图模型中构建“模板”,但这似乎是解决此问题的合理方法.
此处的示例:http://jsfiddle.net/rniemeyer/CWPwj/
或者,您可以考虑使用自定义绑定.也许可以克隆节点,应用attr绑定,然后将其与原始节点交换.这样可以避免将模板嵌入视图模型中.除了这种情况之外,我看不到此绑定的其他用途,但是这里是一个示例实现:http://jsfiddle.net/rniemeyer/rGP7z/
内容总结
以上是互联网集市为您收集整理的javascript-用Knockout.js控制Flash插件,导致jQuery.tmpl和Knockout-Sortable冲突全部内容,希望文章能够帮你解决javascript-用Knockout.js控制Flash插件,导致jQuery.tmpl和Knockout-Sortable冲突所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。