你好,我正在尝试简单地创建输入和iframe,当我粘贴YouTube链接时,iframe应该会随着新的src而改变。到目前为止,我已经这样做了
<div class="heading">id <input data-bind="text: youtubeLink"/></div>
<iframe id="player" type="text/html" width="444" height="250" frameborder="0" data-bind="attr: { src: linkEmbed }"></iframe>
而在脚本中:
function MyViewModel() {
this.youtubeLink = ko.observable('https://www.youtube.com/watch?v=4UNkmlCKw9M');
this.linkEmbed = ko.pureComputed({
read: function () {
var extract = this.youtubeLink().replace("/watch?v=", "/embed/");
console.log(extract)
return extract;
},
write: function (value) {
this.youtubeLink();
},
owner: this
});
}
ko.applyBindings(MyViewModel());
这正是我想要的工作,但视频不会改变,如果我粘贴另一个链接在输入。
我使用的是Knockout文档中的以下内容:http://knockoutjs.com/documentation/computed-writable.html
2条答案
按热度按时间iyzzxitl1#
您有几个问题:
1.您没有在模型上调用
new
,而是将其作为构造函数编写1.对输入使用
text
绑定,而不是value
绑定1.计算的写操作不会赋值,但您也不需要它
一旦你纠正了这些,它就起作用了。
http://jsfiddle.net/ueoob7ne/2/
ymdaylpp2#
**TLDR:**jQuery隐藏了敲除绑定错误。
另一件事打破了它....
众所周知,jQuery会捕捉异常并隐藏它们。我必须逐步执行knockout-debug.js AND THEN jquery.js,直到我看到类似于下面的部分(大约第3600行)
你难道不知道吗......我戴了一只手表,发现里面藏着的东西是: