使用单引号设置angurlarjs属性

时间:2015-04-15 13:45:59

标签: javascript angularjs video.js

我希望使用angularjs动态设置视频播放器的属性。

<video id="youtube" class="video-js video-js-responsive vjs-default-skin vjs-big-play-centered" controls preload="none" data-width="640" data-height="360" data-setup=''></video>

在我的控制器中

var myEl = angular.element( document.querySelector('#youtube'));
myEl.attr('data-setup','{ "techOrder": ["youtube"], "src":"https://www.youtube.com/watch?v=yPIvqJsCOSo"}');

数据设置应该是单引号

data-setup='{ "techOrder": ["youtube"], "src":"https://www.youtube.com/watch?v=yPIvqJsCOSo"}'

但该属性是用双引号设置的。

data-setup="{ "techOrder": ["youtube"], "src":"https://www.youtube.com/watch?v=yPIvqJsCOSo"}"

如何使用单引号设置属性?

我已阅读过这些问题How to escape a single quote ( ' ) in JavaScript?

Single quote escape in JavaScript function parameters

但他们不适用

2 个答案:

答案 0 :(得分:1)

试试这个\"代替"

myEl.attr('data-setup',\"{ \"techOrder\": [\"youtube\"], \"src\":\"https://www.youtube.com/watch?v=yPIvqJsCOSo\"}");

另请参阅 Escaping Characters in Javascript

  

字符&#34;(引号),&#39;(单引号)和/(正斜杠)   是javascript代码本身的组成部分。所以取决于你的方式   构造了javascript,这些字符中至少有两个必须是   在javascript中使用时转义。要做到这一点,\(反斜杠)是   放在每个上述字符之前。没有这些   向后斜线,你的脚本很有可能   根本不会出现。

     

如果您希望显示&#34;显示的文本区域中的(引号)   你的javascript,在字符前面加\(反斜杠)。要么   你也可以使用角色实体而不是角色   本身。例如,如果要显示句子

答案 1 :(得分:1)

修改 带有角度的注视视频:

检查这个jsfidle我准备了4u! https://jsfiddle.net/ok950wtj/

我认为让它运行起来并不复杂。播放暂停按钮更改,视频似乎已加载/检测到!

我检查了你的代码,我认为你正在尝试使用Video.js库。在他们的网页中,他们说:

动态加载HTML的替代设置

如果您的网页或应用程序动态加载视频标记(ajax,appendChild等),以便在加载页面时可能不存在,则您需要手动设置播放器而不是依赖在data-setup属性上。为此,首先从标记中删除data-setup属性,以便在初始化播放器时不会产生混淆。接下来,在加载Video.js javascript库之后运行以下javascript,并在将视频标记加载到DOM之后运行

然后,您似乎需要以这种方式调用视频初始化函数,而不是尝试将数据设置与引用问题一起使用。

希望你能解决它。

function loadvideo(data-set)
{
    videojs("example_video_1", data-set, function(){
      // Player (this) is initialized and ready.
    }); 
}