knockout.js 为什么我的applyBindings不起作用?

ars1skjm  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(135)

你好,我正在尝试简单地创建输入和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

iyzzxitl

iyzzxitl1#

您有几个问题:
1.您没有在模型上调用new,而是将其作为构造函数编写
1.对输入使用text绑定,而不是value绑定
1.计算的写操作不会赋值,但您也不需要它
一旦你纠正了这些,它就起作用了。

function MyViewModel() {
    var model = {};
    model.youtubeLink = ko.observable('https://www.youtube.com/watch?v=4UNkmlCKw9M');
    model.linkEmbed = ko.pureComputed(function () {
        var result = model.youtubeLink().replace("/watch?v=", "/embed/")
        return result;
    });
    return model;
}
ko.applyBindings(MyViewModel());

http://jsfiddle.net/ueoob7ne/2/

ymdaylpp

ymdaylpp2#

**TLDR:**jQuery隐藏了敲除绑定错误。

另一件事打破了它....
众所周知,jQuery会捕捉异常并隐藏它们。我必须逐步执行knockout-debug.js AND THEN jquery.js,直到我看到类似于下面的部分(大约第3600行)

// Only normal processors (resolve) catch and reject exceptions
    process = special ?
        mightThrow :
            function() {
            try {
                mightThrow();
            } catch ( e ) {

你难道不知道吗......我戴了一只手表,发现里面藏着的东西是:

Error: Unable to process binding "text: function(){return ko.toJSON(vm.model(),null,2) }"
Message: Multiple bindings (if and text) are trying to control descendant bindings of the same element

相关问题