【问题标题】:Using dropzone.js within a knockout binding在淘汰赛绑定中使用 dropzone.js
【发布时间】:2015-07-07 14:42:46
【问题描述】:

我正在尝试让 dropzone 用作淘汰赛绑定。我真的很想能够...

ko.bindingHandlers.dropzone = {
    init: function(element, valueAccessor, allBindingsAccessor, bindingContext) {
        $(element).dropzone({ url: 'some/tightly/bound/uri});
    }
}

.. 但我不能。 uri 是基于视图模型中输入的数据的动态的,所以这是我到目前为止提出的:

var dropzoneObject; // probably should be this.dropzoneObject

ko.bindingHandlers.dropzone = {
    init: function(element, valueAccessor, allBindingsAccessor, bindingContext) {
        var url = allBindingsAccessor().urlPath || "unknown";
        dropzoneObject = new Dropzone("div#" + element.id, {
            url: url, 
            init: ...,
            etc
        });
    },
    update: function(element, valueAccessor, allBindingsAccessor, bindingContext) {
        var url = allBindingsAccessor().urlPath || "unknown";
        dropzoneObject.options = {
            url: url
        };
    }
}

但是当我测试这个时,我得到了以下错误:

Uncaught TypeError: Cannot read property 'trim' of undefinedDropzone.defaultOptions.addedfile 
@ dropzone.js:252Emitter.emit @ dropzone.js:58Dropzone.addFile 
@ dropzone.js:956(anonymous function) @ dropzone.js:563

为什么是undefinedDropzone?我错过了什么?

谢谢

【问题讨论】:

    标签: knockout.js dropzone.js


    【解决方案1】:

    找到了答案,我的更新方法是重写所有选项(包括默认选项)而不是更新它:

    ....
    update: function(element, valueAccessor, allBindingsAccessor, bindingContext) {
        var url = allBindingsAccessor().urlPath || "unknown";
        dropzoneObject.options = {
            url: url
        };
    }
    ....
    

    应阅读:

    update: function(element, valueAccessor, allBindingsAccessor, bindingContext) {
        var url = allBindingsAccessor().urlPath || "unknown";
        dropzoneObject.options.url = url;
    }
    

    希望这对某人有所帮助!

    【讨论】:

      猜你喜欢
      • 2013-02-04
      • 2023-04-03
      • 2013-10-31
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多